下载地址:https://download.csdn.net/download/shuails/10905766
基于上一篇基础之上:https://blog.csdn.net/shuaiLS/article/details/86078825
上一篇说明了简单分割窗体的过程,此次将说明二次分割过程
1.再创建一个Dialog,同样的将Styles设置成Child,None
2.添加对应的类CTestDialog01,具体请查看上一篇(注意基类选择FormView)
3.在MainFrm.cpp添加CTestDialog01类的头文件
#include "TestDialog01.h"
4.在MainFrm.h中添加第二个分割类的对象
CSplitterWnd m_Splitter_Ex;
5.修改OnCreateClient代码如下:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if (!m_Splitter.CreateStatic(this, 1, 2)) //分割为1行2列
return false;
m_Splitter.CreateView(0, 1, RUNTIME_CLASS(CTestDialog), CSize(0,0), pContext);
if (!m_Splitter_Ex.CreateStatic(&m_Splitter, 2, 1, WS_VISIBLE|WS_CHILD, m_Splitter.IdFromRowCol(0,0)))//分割为2行1列
return false;
m_Splitter_Ex.CreateView(0, 0, RUNTIME_CLASS(CMySingleTestView), CSize(0,0), pContext);
m_Splitter_Ex.CreateView(1, 0, RUNTIME_CLASS(CTestDialog01), CSize(0,0), pContext);
return true;
}
6.运行效果如下:
7.此时会发现界面中各窗体大小并不是我们想要的效果,此时需要设置分割区的大小,设置横向和纵向占窗体4/5
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
CRect rect;
GetClientRect(&rect);
int iwidth = rect.right;
int iheight = rect.bottom;
if (!m_Splitter.CreateStatic(this, 1, 2)) //分割为1行2列
return false;
m_Splitter.CreateView(0, 1, RUNTIME_CLASS(CTestDialog), CSize(0,0), pContext);
m_Splitter.SetColumnInfo(0,iwidth/5*4,0);
if (!m_Splitter_Ex.CreateStatic(&m_Splitter, 2, 1, WS_VISIBLE|WS_CHILD, m_Splitter.IdFromRowCol(0,0)))//分割为2行1列
return false;
m_Splitter_Ex.CreateView(0, 0, RUNTIME_CLASS(CMySingleTestView), CSize(0,0), pContext);
m_Splitter_Ex.SetRowInfo(0,iheight/5*4,0);
m_Splitter_Ex.CreateView(1, 0, RUNTIME_CLASS(CTestDialog01), CSize(0,0), pContext);
return true;
}
8.运行效果如下: