VC++:用户改变了对话框的大小,怎么使其中的控件的大小、位置动态的改变?
先谢谢各位了!PS:在Jbuilder中,界面管理器可以自动实现这个功能,不用自己加代码,在VC++中研究了半天,还是不行。

解决方案 »

  1.   

    需要你自己来写代码,响应OnSize消息,对控件MoveWindow
      

  2.   

    重载WM_SIZE消息,在OnSize里面用程序计算坐标,然后重新布局你的控件
      

  3.   

    WM_SIZE中SetWindowsPos等成比例调整
      

  4.   

    看来没用过几次VC,我认为VC不算是可视化的家伙。
      

  5.   

    google 一下easysize.h 你会发现好东西。
      

  6.   

    看我做的一个例子,当然,你必须根据自己的需要计算好,我可是算了很久呢,试来失去的,呵呵
    void CDialog2::OnSize(UINT nType, int cx, int cy)
    {
    CDialog::OnSize(nType, cx, cy);
     
         // TODO: 在此处添加消息处理程序代码
         //实现控件随对话框的大小变化而变化
              CRect rect;
     GetClientRect(&rect);
     if(m_ComBo1.m_hWnd)
     {
         m_ComBo1.SetWindowPos(NULL
                  , rect.left+8
                  , 40
         , rect.Width()-10
                  , 20
                 , SWP_SHOWWINDOW);
     }
     if(m_DataStart.m_hWnd)
     {
        m_DataStart.SetWindowPos(NULL
                 , rect.left+77
                 , 87
        , (rect.Width()-77)/2+4
                 , 25
                 , SWP_SHOWWINDOW);
     }  {
                m_Button2.SetWindowPos(NULL
                , rect.right-72
       , 268+abs(rect.Height()-295)
       , 70
                , 20
                , SWP_SHOWWINDOW);
     }}
      

  7.   

    http://www.codeguru.com/Cpp/W-D/dislog/resizabledialogs/article.php/c1947/
    http://www.codeguru.com/Cpp/W-D/dislog/resizabledialogs/article.php/c5001/