MFC单文档视图切分认识

关于这方面的知识点,网上的资料很多,现在和大家分享下我自己碰到的问题。

首先应该先定义这样的变量用来切分窗口:CSplitterWnd m_wndSplitter;CSplitterWnd m_wndSplitter1;

然后是编写一下的代码来实现切分视图

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext* pContext)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值

CRect rc;
GetClientRect(rc);
int cx,cy;
int FrmHeight = GetSystemMetrics(SM_CYCAPTION);//获得主窗口的标题栏、菜单栏的总高度
FrmHeight += GetSystemMetrics(SM_CXMENUSIZE);
cx =GetPrivateProfileInt("Settings","width",0,".\\Config1.ini");
cy =GetPrivateProfileInt("Settings","height",0,".\\Config1.ini");
CSize paneSize(cx-5,cy-200),paneSize2(200,cy),paneSize3(cx-5,200);

m_wndSplitter.CreateStatic(this,1,2);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMyTreeView),paneSize2,pContext);

m_wndSplitter1.CreateStatic(&m_wndSplitter,2,1,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0,0));
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CVTPlayer_MFCView),paneSize,pContext);
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(CAlarmView),paneSize3,pContext);


m_wndSplitter.RecalcLayout();

return TRUE;
}

此时运行程序的话,你会发现视图是被分成了三部分,但是其大小并非真的如参数paneSize,paneSize1,paneSize2所规定的大小。经过各种努力,发现CreateView中的第四个参数实际上是不起作用的,所以你应该添加下面的代码来控制各视图的大小

m_wndSplitter.SetColumnInfo(0,cx,cx);
m_wndSplitter.SetColumnInfo(1,200,200);

m_wndSplitter1.SetRowInfo(0,cy-200,cy-200);
m_wndSplitter1.SetRowInfo(1,200,200);

到此你的视图就能如你所愿被切分成各种大小的窗口了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值