VS2019mfc单文档插入对话框以及简单通信

VS2019mfc单文档插入对话框以及简单通信


首先是建立一个单文档,建立单文档比较简单就不介绍了。
第一步插入对话框。
1.单击“资源视图”,选中“Dialog”,右键并选择“插入Dialog”。
VS2019mfc单文档插入对话框以及简单通信_第1张图片
2.插入对话框后修改对话框的属性。修改为:style=Child,Border=None。
VS2019mfc单文档插入对话框以及简单通信_第2张图片
3.添加类。因为其实插入的对话框只是个空壳而已。选中对话框,然后右键选择“添加类(C)…”。类名可以随便取,但是“基类(B)”那里要选择“CFormView”。最后点击“确认”。
VS2019mfc单文档插入对话框以及简单通信_第3张图片
VS2019mfc单文档插入对话框以及简单通信_第4张图片
第二步往单文档插入对话框。
1.单击“解决方案资源管理器”,进入文件“头文件”,打开“MainFrm.h”,在类CMainFrame中的“public:”下面添加“CSplitterWnd m_splitterWnd;”。
VS2019mfc单文档插入对话框以及简单通信_第5张图片
2.添加函数“BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);”。进入文件“源文件”,打开“MainFrm.cpp”,看看是否有这个函数。如果没有,则单击“项目(P)”,然后选择“类向导(Z)…”。在“类名(N)”下选择“CMainFrame”,然后单击“虚函数”,找到“OnCreateClient”并双击,最后按“确认”。
VS2019mfc单文档插入对话框以及简单通信_第6张图片
3.插入对话框。进入文件“源文件”,打开“MainFrm.cpp”,找到函数“BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)”在里面添加如下代码:
CRect rect;
GetClientRect(&rect);
m_splitterWnd.CreateStatic(this, 1, 2);
m_splitterWnd.CreateView(0, 0, RUNTIME_CLASS(CDui), CSize(rect.Width() / 4, rect.Height()), pContext);
m_splitterWnd.CreateView(0, 1, RUNTIME_CLASS(CMFCApplication9View), CSize(rect.Width()-rect.Width() / 4, rect.Height()), pContext);
return TRUE;
注:“CDui”是对话框的类名,“CMFCApplication9View”改为自己的“CxxxView”。最后还要加上头文件:#include"MFCApplication9Doc.h"
#include"MFCApplication9View.h"
#include"CDui.h"
并且第一个头文件要在第二个头文件的前面。
VS2019mfc单文档插入对话框以及简单通信_第7张图片
第三步对话框和单文档间的通信。
1.单击“解决方案资源管理器”,进入文件“头文件”,打开“xxxView.h”,在类CxxxView中的“public:”下面添加“int m_str_view;”。
VS2019mfc单文档插入对话框以及简单通信_第8张图片
注:不一定是int型,用CString或者其他类型都可以。
2.单击“资源视图”,进入文件“Dialog”,打开插入对话框,双击一个按钮控件,进入该按钮的函数,在控件函数加入如下代码:
CMFCApplication9App* pApp = (CMFCApplication9App*)AfxGetApp();
CMainFrame* pFrame = (CMainFrame*)pApp->m_pMainWnd;
CMFCApplication9View* pView = (CMFCApplication9View*)pFrame->m_splitterWnd.GetPane(0, 1);
pView->m_str_view = 5;
pView->Invalidate();
VS2019mfc单文档插入对话框以及简单通信_第9张图片
注:这样就可以往“CMFCApplication9View”传入一个“5”,那么在使用Ondraw()画画时5就可以作为判断条件或输出内容。
4.到此就实现了全部内容。要想知道更多内容可以访问 更多内容

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