我分割视图,每个视图都设置好了相对位置、比例大小。在框架类的OnSize函数里也设置了大小,这样在拖动窗口大小的时候,每个视图会跟着一起等比例的改变大小。
现在的问题是,我不拖动窗口,只是按下窗口的最大化、还原按键,那些视图就不会按照之前设置的大小关系跟着一起等比例的变化。怎么解决这个问题?我要在什么消息响应中做修改?谢谢。

解决方案 »

  1.   

    我在OnSize里写了啊,是不是我写的有问题啊。下面我代码:void CMainFrame::OnSize(UINT nType, int cx, int cy) 
    {
    CFrameWnd::OnSize(nType, cx, cy);

    // TODO: Add your message handler code here
    CRect rect;        
    GetClientRect(&rect);
    if (m_bCreateSplitter)
    {
    m_wndSplit1.SetRowInfo(0,rect.Height()*4/5,0); 
    m_wndSplit2.SetColumnInfo(0,rect.Width()/4,0);
    m_wndSplit3.SetRowInfo(0, rect.Height()*3/5,0);
    }

    }
      

  2.   

    没有刷新吧;
    加上RecalcLayout()试试;void CMainFrame::OnSize(UINT nType, int cx, int cy)  
    {
    CFrameWnd::OnSize(nType, cx, cy);// TODO: Add your message handler code here
    //CRect rect;   
    //GetClientRect(&rect);
    if (m_bCreateSplitter)
     {
      m_wndSplit1.SetRowInfo(0, cy*4/5, 0);  
      m_wndSplit2.SetColumnInfo(0, cx/4, 0);
      m_wndSplit3.SetRowInfo(0, cy*3/5, 0);  m_wndSplit1.RecalcLayout();
      m_wndSplit2.RecalcLayout();
      m_wndSplit3.RecalcLayout();
     }
    }
      

  3.   


    可以了,谢谢你。
    顺便问一下,为什么拖动的时候不加RecalcLayout()没事,而最大化的时候不加RecalcLayout()就不能正常的显示呢?