窗口切分

对于一个SDI工程Test

首先给CMainFrame增加CSplitterWwnd类型变量m_wndSplit。

如果想分割成左右下三个View,在工程中添加以CView为基础类的CViewOri类,CViewLine类和CViewRes类

重写CMainFrame类的OnCreateClient函数如下

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class

BOOL bCreateSpltr = m_wndSplit1.CreateStatic( this, 2, 1);
// splitter 2 : 1*2
bCreateSpltr = m_wndSplit2.CreateStatic(&m_wndSplit1, 1, 2, WS_CHILD | WS_VISIBLE | WS_BORDER,
   m_wndSplit1.IdFromRowCol(0,0));

// create each view
m_wndSplit2.CreateView(0, 0,RUNTIME_CLASS(CViewOri), CSize(0, 0), pContext);

m_wndSplit2.CreateView(0, 1,RUNTIME_CLASS(CViewRes), CSize(0, 0), pContext);

m_wndSplit1.CreateView(1, 0,RUNTIME_CLASS(CViewLine), CSize(0, 0), pContext);

CRect rect;       
GetClientRect(&rect);
m_wndSplit1.SetRowInfo(0,rect.Height()*4/5,0);
m_wndSplit2.SetColumnInfo(0,rect.Width()/2,0);

return bCreateSpltr;

}

欲得到View的指针,不能简单使用GetActiveView,可从MainFrame的CSplitterWnd成员得到,如下

CMainFrame* pMF=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CViewRes* pViewRes=(CViewRes*)pMF->m_wndSplit2.GetPane(0,1);

注意:使用CMainFrame,要在调用的cpp文件中包含MainFrame.h

          函数结尾必须返回bCreateSpltr,而不是返回CFrameWnd::OnCreateClient(lpcs, pContext);

 

 

(文章来源与 女人的猫 博客)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值