如何在单文档中实现分割窗口功能

1.MainFrame.h

protected:

       CSplitterWnd m_wndSplitterTotal; //用于总体切割

       CSplitterWnd m_wndSplitterRight; //用于右侧切割

       BOOL m_bSplitterCreated; // 是否已经分割窗口

 

2. MainFrame.cpp:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,

       CCreateContext* pContext)

{

       // 创建一个静态分栏窗口,分为一行两列

       if ( m_wndSplitterTotal.CreateStatic(this, 1, 2) == NULL )

       {

              return FALSE;

       }

       // CLandOwnerView类连接到总分栏对象的00

       m_wndSplitterTotal.CreateView(0, 0, RUNTIME_CLASS(CLandOwnerView),

              CSize(700, 700), pContext);

 

       if ( m_wndSplitterRight.CreateStatic(&m_wndSplitterTotal, 2, 1, WS_CHILD | WS_VISIBLE,

              m_wndSplitterTotal.IdFromRowCol(0, 1) ) == NULL )

       {

              return FALSE; 

       }

       // CRightUpView类连接到右边分栏对象的00

       m_wndSplitterRight.CreateView(0, 0, RUNTIME_CLASS(CRightUpView),

              CSize(100, 200), pContext);

 

       // CRightDownView类连接到右边分栏对象的10

       m_wndSplitterRight.CreateView(1, 0, RUNTIME_CLASS(CRightDownView),

              CSize(100, 200), pContext);

 

       // 设置窗格的初始化的大小

       m_wndSplitterTotal.SetRowInfo(0, 100, 0);

       m_wndSplitterTotal.SetActivePane(0, 0, NULL);

       m_bSplitterCreated = TRUE;

       return TRUE;

}

 

当窗口改变大小的时候,分割窗口也会去改变大小

void CMainFrame::OnSize(UINT nType, int cx, int cy)

{

       CFrameWnd::OnSize(nType, cx, cy);

      

       // TODO: Add your message handler code here

       CRect rect;

       GetWindowRect(&rect);

      

       // 如果窗口被分割,而且程序没有最小化

       if ( m_bSplitterCreated && nType != SIZE_MINIMIZED  )

       {

              m_wndSplitterTotal.SetColumnInfo(0, rect.Width() - 250, 10);

              m_wndSplitterTotal.SetColumnInfo(1, 250, 10);

              m_wndSplitterTotal.RecalcLayout();

 

              m_wndSplitterRight.SetRowInfo(0, rect.Height() / 2, 10);

              m_wndSplitterRight.SetRowInfo(0, rect.Height() / 2, 10);

              m_wndSplitterRight.RecalcLayout();

       }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值