例如word2003的查找窗口一样,点“高级”按钮,窗口就会扩展(就是说窗口区域增加,增加的区域就好像是子窗口一样有控件)。按钮变成“常规”,再点“常规”,窗口还原。
窗口如图所示|---------------|
            |           ----|   
            |-----------|---|  小矩形为高级按钮点按钮之后
        |---------------|
        |           ----|   
        |-----------|---| 
        |  ===          |
        |  ===          |   ==表示新增加的控件
        |---------------|  

解决方案 »

  1.   

    通过SetWindowPos来设置窗口的大小,至于控件的摆放你可以根据窗口的状态来设计
      

  2.   

    你可以本来就把窗口化成大的,控件也都画在上面。在OnInitDialog()函数里,使用this->GetWindowRect(&rectBig)存储一下窗口的原始大小,rectBig为CRect类对象,rectBig.Width()和rectBig.Height()分别为窗口的宽和高。不想显示的控件可以先隐藏。在显示窗口的时候,调用setwindowpos(),把第4,5个参数设置成你想要的值,这两个参数是设置窗口显示大小的。
    比如,你想让“常规”窗口比“高级”窗口的高度小300,可以调用setwindowpos(xx,xx,xx,rectBig.Width(),rectBig.Height()-300,SWP_SHOWWINDOW),点击按钮“高级”按钮之后,再次调用setwindowpos(xx,xx,xx,rectBig.Width(),rectBig.Height(),SWP_SHOWWINDOW)让窗口完全显示。点击“常规”按钮之后,setwindowpos(xx,xx,xx,rectBig.Width(),rectBig.Height()-300,SWP_SHOWWINDOW)即可隐藏不想显示的窗口。