用CFormView类的放的控件,如在600X800的分辨率下,可以正好放置在窗口中央,可是换成1024X768时,变小不说,主要是不在窗口中央了,不美观,看有没有朋友有解决办法?谢谢!这个帖子也是这个问题.
http://community.csdn.net/Expert/topic/4322/4322607.xml?temp=.323971
感谢!

解决方案 »

  1.   

    不很明白你的需求,听起来好像和可变大小的对话框的需求是类似的,可以在OnSize里面重新计算各控件的大小和位置
      

  2.   

    是这样的,举个例子,就是在600X800时,设置合适CFormView的大小,在其中放置好各种控件,使显示时,可以正好布局在窗口的合适位置,当换成1024x768或者其它分辨率后,CFormView中放置的各种控件的位置就不会在窗口原来的的位置,而是在窗口的左上角600X800这个范围内,这样看起来不美观,如果有办法使CFormView居中,应该这个问题就解决了,
    利用OnSize可能需要计算每个控件的位置,如果控件比较多,计算量会很大.谢谢!
      

  3.   

    得到当前屏幕分辨率大小,然后再自己MoveWindow
      

  4.   

    利用MoveWindows()好象也不一定行,因为跟字体也有关系,在1024x768下,将Windows的小字体换成大字体后,原来在左上角的显示,又正好布局在Windows的合适位置.
    谢谢!
      

  5.   

    能不能不一个一个移动控件?只把CFormView的位置挪一下,它上面的控件跟着它就移动了,不一定非要正好又添满窗口,只要居中就行了?
    用CenterWindow()行不行?怎么用?谢谢!
      

  6.   

    主框架大小固定,void CMainView::OnInitialUpdate()
    {
    CFormView::OnInitialUpdate();
    GetParentFrame()->RecalcLayout();
    ResizeParentToFit();
    GetParentFrame()->CenterWindow();
    }
      

  7.   

    用API得到分辨率,再计算相对位置