CreateClient时我把MDI的子窗体用CSplitterWnd分割,并且分别放入一个Dialog,对应的类是CDecisionView和CDecodingView:
m_wndSplitter.CreateStatic(this,2,1);
m_wndSplitter.CreateView( 0, 0,RUNTIME_CLASS(CDecisionView), CSize(850,350), pContext);
m_wndSplitter.CreateView( 1, 0, RUNTIME_CLASS(CDecodingView), CSize(850,300), pContext);
此时运行一切正常
如果我想在MainFrame改变大小时,相应的ChildFrame中的分割线仍在正中间位置,并且,其中的两个dialog大小自动resize为ChildFrame中为它分割的这么大,应该如何做呢?
我用MoveWindow不行,甚至放在一个按钮里触发改变DIALOG大小的代码都不行,编译通过,一执行就应用程序出错退出,相应代码如下:
CRect rect;
GetDlgItem(IDD_DECISIONVIEW)->GetWindowRect( &rect );
ScreenToClient( &rect );
rect.right -= 1;
rect.bottom -= 1;
GetDlgItem(IDD_DECISIONVIEW)->MoveWindow(rect);期待您的回答,谢谢!

解决方案 »

  1.   

    IDD_DECISIONVIEW是什么
    以上代码加在哪里的
      

  2.   

    在主框架的 OnSize中重新计算并设置拆分窗格的大小
      

  3.   

    在视图中响应ON_SIZE,用m_wndSplitter,重定设定分割窗口大小,不知道这样行不行.呵.
      

  4.   

    cleverwyq(性格决定命运可惜明白的太晚了):
    IDD_DECISIONVIEW是其中一个DIALOG的ID,我暂时把这段代码加在一个按钮里,目的是测试这个内嵌的DIALOG能否RESIZESoLike(思危):
    那如何设置内嵌的DIALOG的大小呢,我只要一用MOVEWINDOW或SETWINDOWSPOS这类函数,如上代码,就应用程序出错退出raymonzhao():
    关键还是要把DIALOG能改变大小,对于这种内嵌的,不知道如何搞定谢谢各位的关注,希望能继续得到你们的帮助
      

  5.   

    SoLike(思危) :没有,我对这些概念不是很清楚,工程比较急,现在来不及系统的看书了,所以来此求教
      

  6.   

    给一段类似的代码
    void CChildFrame::OnSize(UINT nType, int cx, int cy) 
    {
       CMDIChildWnd::OnSize(nType, cx, cy);   CRect rect;
       GetWindowRect( &rect );
       if( m_bSplitterCreated )  // m_bSplitterCreated set in OnCreateClient
       {
          m_wndSplitter.SetColumnInfo(0, rect.Width()/2, 10);
          m_wndSplitter.SetColumnInfo(1, rect.Width()/2, 10);
          m_wndSplitter.RecalcLayout();
       }
    }