MFC单文档应用程序 嵌入对话框分割窗口

分割窗口的操作

  • 添加几个对话框,设置对话框属性
    MFC单文档应用程序 嵌入对话框分割窗口_第1张图片

  • 给对话框添加关联的类,基类为CFrameView,注意不是CDialogEX

  • 给CMainFrame类添加CSplitterWnd类对像splitter

  • CMainFrame类包含头文件

#include"切割窗口Doc.h"
#include"切割窗口View.h"//Doc类一定要在View类上面
#include"RDlg.h"//要嵌入的两个对话框对应的类
#include"LDlg.h"
  • 使用类向导重写OnCreateClient函数
    MFC单文档应用程序 嵌入对话框分割窗口_第2张图片
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
	// TODO: 在此添加专用代码和/或调用基类
	CRect rect;

	GetClientRect(rect);


	splitter.CreateStatic(this, 1, 2, WS_CHILD | WS_VISIBLE | WS_BORDER);
	

	splitter.CreateView(0, 0, RUNTIME_CLASS(RDlg), CSize(rect.Width()/2,rect.Height()/2), pContext);   //Ctest是对话框类
	splitter.CreateView(0, 1, RUNTIME_CLASS(LDlg), CSize(rect.Width() / 2, rect.Height() / 2), pContext);   //Ctest是对话框类
	
	return true;
}

运行结果
MFC单文档应用程序 嵌入对话框分割窗口_第3张图片

关于CSplitterWnd类

1、创建动态切分窗口

BOOL Create(CWnd* pParentWnd,int nMaxRows,int nMaxCols,SIZE sizeMin,CCreateContext* pContext,DWORD dwStyle,UINT nID);

2、创建静态切分窗口

BOOL CreateStatic(CWnd* pParentWnd,int nRows,int nCols,DWORD dwStyle,UINT nID)

3、为静态切分的窗口网格填充视图

BOOL CreateView (int row,int col,CruntimeClass* pViewClass,SIZE sizeinit,CcreateContext* pContext); 

4、参数说明
pParentWnd 切分窗口的父框架窗口。
nMaxRows,nMaxCols是创建的最大的列数和行数。
sizeMin是窗格的现实大小。
pContext 大多数情况下传给父窗口。
nID是字窗口的ID号.
通常创建静态切分窗口

你可能感兴趣的:(MFC,mfc,c++)