请教一下,当窗口最大化最小化按钮按下之后,怎么样保持原来控件的相对位置不变?

解决方案 »

  1.   

    最小化不会改变控件的位置吧?如果要最大化后,控件之间的相对位置没有变化(随着最大化,控件的位置也随之移动,保持原来的位置比例),要达到这种效果的话,需要自己对控件进行位置调整。比如用GetDlgItem获取控件的句柄,再用MoveWindow来移动控件。
      

  2.   

    GetClientRect();获取当前窗口位置,计算相对位置,movewinodw 或setwinodwpos 重新定位窗口
      

  3.   

    最大化后,重新设置控件的位置,WM_SIZE消息中
      

  4.   

    相对位置没有改变,是绝对位置改变了。
    一般都得自己调整,中间的话可以根据crect的CenterPoint()来相应设置。
      

  5.   


    也只有麻烦的方法了,VC出来的东西肯定比不上JAVA的适应能力了。
      

  6.   

    请问下获取控件位置和设置控件位置的函数是哪个?
    void mydlg::OnSize(UINT nType, int cx, int cy) 
    {
     LPRECT lpRect;
    m_ctrlSlip.GetWindowRect(lpRect);//此处死掉,但m_ctrlSlip有值
        lpRect->left*=(cx/m_icx);
    lpRect->right*=(cx/m_icx);
    lpRect->top*=(cy/m_icy);
    lpRect->bottom*=(cy/m_icy);
    m_ctrlSlip.SetWindowPos(NULL,lpRect->left,lpRect->top,lpRect->right,lpRect->bottom,SWP_NOSIZE);
    CDialog::OnSize(nType, cx, cy);
    }
      

  7.   

    用GetDlgItem获取控件的句柄,再用MoveWindow来移动控件。另外,在OnSizing()事件里调整控件位置。
      

  8.   


    用GetClientRect来获取原来位置。