首页 理论教育VC++MFC视频教程:MDI框架与子窗口结构

VC++MFC视频教程:MDI框架与子窗口结构

【摘要】:创建一个工程名为“ie”的MDI程序,本节演示多文档界面开发。1)在程序向导第1步中,去掉“Document/View architecture support”选项,如图12-24所示。图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代码。

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

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

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

978-7-111-46378-8-Chapter12-60.jpg

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

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

978-7-111-46378-8-Chapter12-61.jpg

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

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

978-7-111-46378-8-Chapter12-62.jpg

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

978-7-111-46378-8-Chapter12-63.jpg

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

978-7-111-46378-8-Chapter12-64.jpg

978-7-111-46378-8-Chapter12-65.jpg

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

978-7-111-46378-8-Chapter12-66.jpg

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

978-7-111-46378-8-Chapter12-67.jpg

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

978-7-111-46378-8-Chapter12-68.jpg

图12-26 查看运行结果

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

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

978-7-111-46378-8-Chapter12-69.jpg

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

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

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

978-7-111-46378-8-Chapter12-70.jpg

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

978-7-111-46378-8-Chapter12-71.jpg(www.chuimin.cn)

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

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

978-7-111-46378-8-Chapter12-72.jpg

图12-29 添加关联变量

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

978-7-111-46378-8-Chapter12-73.jpg

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

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

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

978-7-111-46378-8-Chapter12-74.jpg

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

978-7-111-46378-8-Chapter12-75.jpg

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

978-7-111-46378-8-Chapter12-76.jpg

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

17)修改函数代码。

978-7-111-46378-8-Chapter12-77.jpg

978-7-111-46378-8-Chapter12-78.jpg

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

978-7-111-46378-8-Chapter12-79.jpg

图12-33 查看运行结果

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

978-7-111-46378-8-Chapter12-80.jpg

图12-34 编辑快捷键资源

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

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

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

978-7-111-46378-8-Chapter12-81.jpg

978-7-111-46378-8-Chapter12-82.jpg