zoukankan      html  css  js  c++  java
  • MFC中使用CSplitterWnd分割窗口后设置视图大小的问题

      开发环境:vs2010

      在对框架窗口进行分割之后需要根据需求设置每个分割窗口的大小,但是在通过createView(...)设置大小时,往往起不到想要的结果,如下代码并不能将框架的窗口按照预设的大小来进行分割:

     1 BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
     2 {
     3     // TODO: 在此添加专用代码和/或调用基类
     4     //return CFrameWndEx::OnCreateClient(lpcs, pContext);
     5     isSplitter = splitterWnd(pContext);
     6     return isSplitter;
     7 }
     8 
     9 bool CMainFrame::splitterWnd(CCreateContext* pContext)
    10 {
    11     if(!m_mainSplitter.CreateStatic(this,1,3))
    12         return false;
    13     if(!m_leftSplitter.CreateStatic(&m_mainSplitter,2,1,WS_CHILD | WS_VISIBLE,m_mainSplitter.IdFromRowCol(0,0)))
    14         return false;
    15 
    16     m_leftSplitter.CreateView(0,0,RUNTIME_CLASS(CInputImage),CSize(10,1),pContext);
    17     m_leftSplitter.CreateView(1,0,RUNTIME_CLASS(CCalculateItem),CSize(10,1),pContext);
    18     m_mainSplitter.CreateView(0,1,RUNTIME_CLASS(COriginImage),CSize(1,1),pContext);
    19     m_mainSplitter.CreateView(0,2,RUNTIME_CLASS(CCalculateResult),CSize(1,1),pContext);
    20 
    21     return true;
    22 }
    View Code

      这时候,需要在设置了在CreateView后,使用m_wndSplitter.SetRowInfo(....)设置水平分割条的位置,通常可以onSize()函数中进行设置,以达到分割窗口能够根据父窗口的大小自动调整,代码如下:

     1 void CMainFrame::OnSize(UINT nType, int cx, int cy)
     2 {
     3     CFrameWndEx::OnSize(nType, cx, cy);
     4 
     5     // TODO: 在此处添加消息处理程序代码
     6     CRect clientRect;
     7     GetClientRect(&clientRect);
     8 
     9     if(isSplitter)
    10     {
    11         m_mainSplitter.SetColumnInfo(0,clientRect.Width() * 0.15,10);
    12         m_mainSplitter.SetColumnInfo(1,clientRect.Width() * 0.7,10);
    13         m_leftSplitter.SetRowInfo(0,clientRect.Height() * 0.15,10);
    14         m_mainSplitter.RecalcLayout();
    15         m_leftSplitter.RecalcLayout();
    16     }
    17 }
    View Code

    参考网帖:http://bbs.csdn.net/topics/390478203?page=1

  • 相关阅读:
    CF763C Timofey and Remoduling
    CF762E Radio Stations
    CF762D Maximum Path
    CF763B Timofey and Rectangles
    URAL1696 Salary for Robots
    uva10884 Persephone
    LA4273 Post Offices
    SCU3037 Painting the Balls
    poj3375 Network Connection
    Golang zip压缩文件读写操作
  • 原文地址:https://www.cnblogs.com/liujinyao/p/4192405.html
Copyright © 2011-2022 走看看