是不是一个一个控件计算、移动?那岂不是非常烦?
我在OnDraw里面进行控件的重新放置,对吗?

解决方案 »

  1.   

    当窗口收到WM_SIZE消息时,对窗口上的控件进行调整。
      

  2.   

    我试着在OnSize里调整,但是可能是在窗口初始化时也会有WM_SIZE消息,所以程序有异常了。各位大虾再指点一下。还有,我调整后的窗口,为什么会有一个滚动条?确认了所有的控件都没有超出窗口范围啊。把窗口拉大一点滚动条就没有了,郁闷。
      

  3.   

    嗯,得加一个bool的成员变量,表示控件创建完成否,跳过初始化时的WM_SIZE消息
    一般是构造函数初始化为false,在OnCreate中设成true,在OnSize里面判断一下
    为true重排控件
      

  4.   

    用GetSafeHwnd()函数判断,即可以:
    if(GetDlgItem(IDC_YOURCTRLID)->GetSafeHwnd())
    {
    CRect rect(70, 10, cx, 31);//你的相应控件的位置;
    GetDlgItem(IDC_YOURCTRLID)->MoveWindow(&rect);
    }
      

  5.   

    补充一下,窗口是FormView,单文档的。
      

  6.   

    在CView中的OnInitialUpdate()中添加下面代码:CSize SizeView;
    SizeView.cx = 0;
    SizeView.cx = 0;
    SetScrollSizes( MM_TEXT, SizeView );这样就行啦!
      

  7.   

    产生不产生滚动条,不是完全有控件确定,而是有你的资源中FormView的大小确定的,如果你的FormView资源的边界空白都不是很大的话,是不会有这个问题的解决办法,缩小FormView资源的大小,使它和控件空间大小匹配即可。
      

  8.   

    呵呵,搞定了,加了一个这个:
    SIZE sz;
             ....
    GetParentFrame()->RecalcLayout();
    SetScaleToFitSize(sz);
    多谢各位大虾指点!
      

  9.   

    楼主,多谢厚爱,但是我觉得分给我给得多了,消受不起,呵呵,GGJJDDMM们会有意见的,^_^