Visual C++ 2010开发权威指南-2 MFC应用程序框架(未完)

来源:互联网 发布:博思数据 怎么样 编辑:程序博客网 时间:2024/04/29 09:01

Visual C++ 2010开发权威指南-2 MFC应用程序框架(未完)

2.1 用MFC向导生成应用程序
2.1.1 生成的程序框架
CWinApp:应用程序类,负责初始化和运行应用程序;
CFrameWnd:框架类,负责显示和搜寻用户命令;
CDocument:文档类,负责装载和维护文档,文档可以是从文档到网络设备设置的任何内容;
CView:视图类,负责为文档提供一个或多个视图。
2.1.2 生成的应用程序类型
5种应用程序:控制台、基于对话框、基于单文档、基于多文档、基于HTML。
2)基于对话框的应用程序
特点:没有框架类、文档类或视图类。
结构:CWinApp->CWinDialog->WindowObjects
可以使用选项卡降低基于对话框的应用程序界面的拥挤程度。
3)单文档应用程序SDI
包含的类:从CWinApp派生的应用程序类,从CFrameWnd派生的框架类,从CDocument派生的文档类,从Cview派生的每个文档的一个或多个视图类。
通过把应用程序的基视图类选择为CHtmlView,可以把单文档应用程序转换为简单的Web浏览器。
缺点:同一时间只能打开一个文档,若要查看一篇文档,需要在查看前关闭当前打开的文档。
4)多文档应用程序MDI
包含的类:从CWinApp派生的应用程序类,从CMDIFrameWnd的框架类,从CMDIChildWnd派生的一个或多个子框架类,从CDocument派生的每个子框架一个文档类,从Cview派生的每个文档的一个或多个视图类。
Word和Excel都是多文档应用程序。
通过把应用程序的基视图类选择为CHtmlView,可以把多文档应用程序转换为简单的Web浏览器。
5)基于HTML的应用程序
2.1.3 向导生成工程文件简介
2.2 应用程序框架分析
1)CWinApp派生的CXxxApp类
任何MFC应用程序只有一个CWinApp对象,用于控制程序的初始化、程序的启动、主消息循环的运行、程序终止。
CWinApp类不仅代表程序运行的主线程,而且代表了应用程序本身,是应用程序开始后创建的第一个对象,也是结束前执行的最后一个对象。
启动后,应用程序类负责创建应用程序的其他对象。
CWinApp的主要成员函数:InitInstance(),Run(),ExitInstance()。
InitInstance()在生成一个新的实例的时候,完成初始化工作。
应用程序类的另一个主要功能:通过文档模板类CDocTemplate将框架窗口类、文档类、视图类与应用对象联系起来。文档模板类有两个派生类CSingleDocTemplate类和CMultiDocTemplate类。
2)CFrameWnd派生的CMainFrame类
框架类CFrameWnd是应用程序运行时创建的第二个对象,负责显示和监督用户对应用程序其余部分的操作,负责标题栏、菜单栏、工具栏、状态栏的生成。
多文档应用程序框架类为CMainFrame,每个打开的文档有一个子框架类,每个子框架类CChildFrm从CMDIChildWnd类派生。
3)CXxxView类和CXxxDoc类
视图类显示文档数据、接受用户输入、编辑,通过消息与主框架、文档对象互操作。
文档类存储数据,为视图类提供显示的数据来源。
4)其他用户界面类
空间窗口类、菜单类、对话框类、控制条类、属性类。
2.2.3 应用程序窗口
3种:重叠窗口(主窗口或框架窗口)、弹出窗口(对话框或消息框)、子窗口(控件、工作区等)。
每个窗口包含由系统绘制的“非客户区”和由应用程序绘制的“客户区”。
1)创建窗口
过程:首先创建类CWnd的一个实例,然后调用其一个成员函数,该成员函数调用API中的CreateWindow()函数,返回窗口句柄(指向窗口对象的非直接指针,即指向跟踪窗口对象地址的另一个指针),保存在CWnd的成员变量m_hWnd中。
创建窗口函数的具体使用参见该教材相应章节!
2)销毁窗口
2.2.4 消息机制与消息循环
注册窗口类、创建窗口、显示、更新窗口等初始化工作完成后,WinMain()进入消息循环。
Win32应用程序中采用消息循环机制(一系列的switch-case语句处理消息);MFC应用程序采用消息映射机制。
消息的种类:键盘消息、鼠标消息、窗口消息、焦点消息、定时器消息WM_TIMER、命令消息WM_COMMAND。
2.3 文档与视图
文档-视图体系结构将数据的管理和显示分离:文档对象用于容纳数据(管理),视图对象用来显示数据并对数据进行编辑(交互)。

0 0
原创粉丝点击