第4节  MDIFrameWnd-MDIChildWnd结构

更新于 2026年10月10日 版权声明
第4节 MDIFrameWnd-MDIChildWnd结构

单文档界面(SDI)由一个主框架和一个视图组成,是一对一的关系,主框架和视图共用一个主菜单资源。多文档界面(MDI)由主框架和子框架两层框架组成,主框架和子框架各自使用不同的菜单资源。一个主框架内部含有多个子框架,是一对多的关系,每个子框架内含有一个视图,是一对一的关系。

创建一个工程名为“ie”的MDI程序,本节演示多文档界面开发。

1)在程序向导第1步中,去掉“Document/View architecture support”选项,如图12-24所示。

图示

图12-24 创建框架视图程序

2)工程创建完成后,在类视图中添加CHtmlView的派生类,如图12-25所示。

图示

图12-25 添加HTML视图类的派生类

3)在子框架类CChildFrame的头文件中,使用CMainView替换原有的CChildView对象。

图示

4)在CChildFrame::OnCreate函数中,去除CChildView的创建代码。

图示

5)在其他两个子框架类的成员函数中,使用m_pMainView替换m_wndView。

图示

图示

6)在类视图中的CChildFrame类名上,添加OnCreateClient虚函数。

图示

7)在App类中修改ID_FILE_NEW菜单项消息映射函数OnFileNew代码。

图示

8)编译并运行,测试代码,如图12-26所示。

图示

图12-26 查看运行结果

每次执行“文件→新建”命令,主框架内部都产生一个新的子窗口,在视图上单击鼠标右键显示是一个空白网页。

9)在资源视图中添加一个对话框资源,修改ID为IDD_OPEN_DLG,如图12-27所示。

图示

图12-27 编辑地址对话框资源

10)修改对话框字体和外观并添加一些控件,见表12-4。

表12-4 地址对话框的控件属性

图示

11)通过类向导为IDD_OPEN_DLG建立CDialog派生类,类名是“COpenDlg”,如图12-28所示。

图示(https://www.daowen.com)

图12-28 创建地址对话框的关联类

12)在COpenDlg类中为组合控件添加数值型和控件型两个关联变量,如图12-29所示。

图示

图12-29 添加关联变量

13)在COpenDlg类中,添加WM_INITDIALOG的消息映射函数并修改代码。

图示

14)修改主框架菜单资源(IDR_MAINFRAME),添加一个“打开”的菜单项,如图12-30所示。

15)在子框架菜单(IDR_IETYPE)中,也添加相同ID和标题的菜单项,如图12-31所示。

16)在类向导中选中CIeApp类,添加ID_FILE_OPEN菜单项的消息映射函数,如图12-32所示。

图示

图12-30 编辑主框架菜单资源

图示

图12-31 编辑子框架菜单资源

图示

图12-32 添加菜单项消息映射函数

17)修改函数代码。

图示

图示

18)编译并运行,测试代码,如图12-33所示。

图示

图12-33 查看运行结果

19)在快捷键表中双击空白表格,添加菜单项ID_FILE_OPEN的快捷键,如图12-34所示。

图示

图12-34 编辑快捷键资源

20)编译并运行,测试代码。

菜单项标题“打开(&O)\tCtrl+O”并非是快捷键设置而只是起显示作用,真正的快捷键只能在快捷键表中设置。

21)清理程序初始化函数代码并分析。

图示

图示

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)