如何在拉着对话框的边框改变大小时,让它成比例的变化.就像视频播放软件哪样.

解决方案 »

  1.   

    a solution 
    http://www.codeguru.com/dialog/FlickerFreeResize.shtml
      

  2.   

    CResizableDialog
    By Paolo Messina A CDialog derived class to implement resizable dialogs with MFC 
     
    http://www.codeproject.com/dialog/resizabledialog.aspEasySize - Dialog resizing in no time!
    By Marc Richarme An easy way to position controls in resizable dialogs or property pages using just a few macros  http://www.codeproject.com/dialog/easysize.asp
      

  3.   

    u can do it by youself
    Handle the WM_SIZE message
      

  4.   

    处理wm_sizing消息void CTest 1Dlg::OnSizing(UINT fwSide, LPRECT pRect){
      CDialog::OnSizing(fwSide, pRect);  if((fwSide==WMSZ_BOTTOM) || (fwSide==WMSZ_TOP))
        pRect->right=pRect->left+(pRect->bottom-pRect->top)*2;  
      else
        pRect->bottom=pRect->top+(pRect->right-pRect->left)*0.5;  
      // TODO: 在此添加消息处理程序代码
    }
      

  5.   

    同意木鱼
    先求出X,Y的比例,或直接由你给出。
    然后在OnSize()函数中。
    if(move_x > move_y)
      MoveWindow()窗口宽度加move_x,按比例求出窗口高度
    else
      MoveWindow()窗口高度加move_y,按比例求出窗口宽度
      

  6.   

    如果在ONSIZE中做,哪个成比例的虑框出不来只在在变化完成后,一下变成了哪样的SIZE.
    因为只有在变化结束后才会有WM_SIZE消息.
    我希望是在变化时出一个虑框,而不实际进行变化,这样用户可以有直观的感觉.
      

  7.   

    这样的话,你就应该处理WM_NCLBUTTONDOWN,WM_NCMOUSEMOVE,WM_NCLBUTTONUP,
    自己画虚框了
      

  8.   

    木鱼:
    我响应了以上的三个消息,但发现WM_NCLBUTTONUP,从来就不响应,用SPY看也没有这个消息.
      

  9.   

    同意木鱼
    先求出X,Y的比例,或直接由你给出。
    然后在OnSize()函数中。
    if(move_x > move_y)
      MoveWindow()窗口宽度加move_x,按比例求出窗口高度
    else
      MoveWindow()窗口高度加move_y,按比例求出窗口宽度