刚学VC6,请教各位一个问题;窗体类OnSize中写窗体里各控件的位置控制代码,我用MoveWindow似乎不行,以为顶级窗体相对坐标是屏幕,子窗体相对坐标是父窗体,可能这是控制窗体的吧,而我想控制的是窗体里的控件,请问该用哪个?多谢

解决方案 »

  1.   

    MoveWindow可以啊,只要用成员变量窗口调用就可以了,比如m_btn是你的一个按钮变量那么m_btn.MoveWindow就可以移动了啊,坐标是相对主窗口的坐标
      

  2.   

    我的代码如下:是不是我写的有问题,其中m_vsfGrid是一个控件
    void CGridDlg::OnSize(UINT nType, int cx, int cy) 
    {
    CDialog::OnSize(nType, cx, cy);

    RECT m_Rect;
    GetWindowRect(&m_Rect);
    m_vsfGrid.MoveWindow(&m_Rect,0);
    }
      

  3.   

    void CDebugskillDlg::OnSize(UINT nType, int cx, int cy) 
    {
    CDialog::OnSize(nType, cx, cy);

    // TODO: Add your message handler code here
        static BOOL init=FALSE;
    if(!b)
    {
    init=TRUE;
    return;
    }
    RECT m_Rect;
    GetWindowRect(&m_Rect);
    ScreenToClient(&m_Rect);
    m_btn.MoveWindow(&m_Rect,0);

    }
      

  4.   

    void CDebugskillDlg::OnSize(UINT nType, int cx, int cy) 
    {
    CDialog::OnSize(nType, cx, cy);

    // TODO: Add your message handler code here
        static BOOL init=FALSE;
    if(!init)
    {
    init=TRUE;
    return;
    }
    RECT m_Rect;
    GetWindowRect(&m_Rect);
    ScreenToClient(&m_Rect);
    m_btn.MoveWindow(&m_Rect,0);

    }
      

  5.   

    先要判断m_btn.GetSafeHwnd是不是null
      

  6.   

    试了一下,加了ScreenToClient(&m_Rect);就OK了,多谢了。
    还请问下,    
    static BOOL init=FALSE;
    if(!init)
    {
    init=TRUE;
    return;
    }
    这段程序有什么用?
    是这个函数只执行一次的意思?