【摘要】:1)在程序向导第1个步骤中,去掉“Document/View architecture support”选项,如图12-4所示。5)在主框架类CMainFrame的头文件中,使用CMainView替换原有的CChildView。6)在CMainFrame::OnCreate函数中,去除CChildView的创建代码。7)在其他两个框架类的成员函数中,使用m_pMainView替换m_wndView。8)在类视图中的CMainFrame类上添加OnCreateClient虚函数,如图12-7所示。②OnCreateClient是CFrameWnd类的虚函数,在基类函数CFrameWnd::OnCreate执行的过程中回调OnCreateClient函数,主要用于创建视图类等客户区子窗口。③OnInitialUpdate是CView类虚函数,专用于视图初始化,类似于对话框类的OnInitDialog函数。
创建一个工程名为“sd”的单文档界面程序(SDI),用于演示手动创建框架和视图的过程。
1)在程序向导第1个步骤中,去掉“Document/View architecture support”选项,如图12-4所示。
图12-4 创建框架视图程序
2)一直单击“下一步”按钮,直到第5步选“As a statically linked library”,如图12-5所示。
图12-5 MFC应用程序向导
3)完成工程创建后,在类视图中添加CListView派生类,如图12-6所示。
图12-6 添加列表视图类的派生类
4)在头文件中包含基类的头文件。
5)在主框架类CMainFrame的头文件中,使用CMainView替换原有的CChildView。
6)在CMainFrame::OnCreate函数中,去除CChildView的创建代码。
7)在其他两个框架类的成员函数中,使用m_pMainView替换m_wndView。
8)在类视图中的CMainFrame类上添加OnCreateClient虚函数,如图12-7所示。
图12-7 为CMainView类添加虚函数
9)修改OnCreateClient虚函数代码,在主框架的客户区创建列表视图。
10)在类视图中的CMainView类上添加OnInitialUpdate虚函数,如图12-8所示。
图12-8 为CMainView类添加虚函数
11)修改OnInitialUpdate函数代码初始化列表视图。
12)编译并运行,测试代码,如图12-9所示。
图12-9 查看运行结果
一个简单的SDI架构效果比对话框程序的界面要宽大一些,而且还有菜单和工具栏等辅助界面。
13)在资源视图中插入一个对话框资源,用于向列表视图中添加数据,如图12-10所示。(www.chuimin.cn)
14)修改对话框ID为IDD_INPUT_DLG,修改外观和字体并插入一些控件,见表12-1。
图12-10 编辑录入对话框资源
表12-1 录入对话框的控件属性
15)创建与IDD_INPUT_DLG关联的CDialog派生类,并建立数据型关联变量,如图12-11所示。
图12-11 添加数据型关联变量
16)在资源视图中修改IDR_MAINFRAME主菜单,如图12-12所示。
17)在“编辑”菜单下面,添加三个子菜单项,见表12-2。
18)在刚添加的菜单项上打开类向导,如图12-13所示。
19)在类向导中为刚添加的菜单项建立消息映射函数,如图12-14所示。
图12-12 编辑主菜单资源
表12-2 主菜单的菜单项属性
图12-13 打开类向导
图12-14 添加菜单项的消息映射函数(注意,类名选择CMainView)
20)修改以上建立的消息映射函数的代码。
21)编译并运行,测试代码,如图12-15所示。
图12-15 查看运行结果
22)框架类和视图类重要回调函数包括消息回调和虚函数回调。
①OnCreate是WM_CREATE的消息映射函数,主要用于框架类的界面初始化。例如,创建工具栏、状态栏以及视图等子窗口界面。
②OnCreateClient是CFrameWnd类的虚函数,在基类函数CFrameWnd::OnCreate执行的过程中回调OnCreateClient函数,主要用于创建视图类等客户区子窗口。
③OnInitialUpdate是CView类虚函数,专用于视图初始化,类似于对话框类的OnInitDialog函数。
④PreCreateWindow是CWnd类虚函数,用于在窗口创建之前设定新窗口的属性的预处理。
相关推荐