欢迎来到天天文库
浏览记录
ID:60760446
大小:428.00 KB
页数:75页
时间:2020-02-02
《第三章MFC应用程序框架.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第3章MFC应用程序框架如果把设计Windows应用程序框架所需要的API函数和数据封装成类,便可以利用类的继承性实现代码重用,并在派生过程中对它进行必要的改造,从而快速地获得所需要的类,提高应用程序框架的开发效率。MFC正是满足上述要求的一个类库,它有一组专门的类,可以快速创建应用程序的框架3.1早期的应用程序框架及其MFC类早期的MFC,正如第2章所介绍,在应用程序类中嵌入一个窗口类对象就构成了程序的框架。尽管比较简单,但它体现了MFC程序的主体结构3.1.1早期的应用程序框架早期的应用程序框架由两个对象组成:应用程序类CWinApp的派生类对象和窗口类CFrameWnd的派生类
2、对象,后者作为一个成员对象嵌在前者之中。在应用程序主函数WinMain()中,CWinApp派生类的对象theApp通过调用自己的各个成员函数来完成程序的初始化及消息循环等一系列工作3.1.2MFC的窗口类窗口类CFrameWnd是一个重要类,它的对象通常就是应用程序的主窗口。因此作为程序设计人员,必须对它和它的基类有一个比较清楚的了解。CFrameWnd类由基类CObject经CCmdTarget、CWnd派生而来1.CObject类CObject类为其派生类不仅提供了程序调试诊断信息输出之通用功能,并且还对运行期对象类型识别(RTTI)、对象的动态创建、对象的序列化提供了相应的支
3、持。凡是需要具有上述功能的类,必须以CObject或其派生类为基类来派生2.CCmdTarget类为了支持消息处理,MFC以CObject类为基类派生了CCmdTarget类,并在这个类中封装了窗口函数凡是希望具有处理Windows消息的能力的类都必须以CCmdTarget类或其派生类为基类来派生3.CWnd类Windows把应用程序窗口界面上的许多图形元素,例如,控制栏、对话框、视图、属性页和控件等,都看作子窗口为了对这些窗口类提供应有的通用属性和方法,MFC以CCmdTarget类为基类派生了CWnd类。凡是以窗口形式为外观并且可以响应消息的类,它们的基类都是CWnd类4.CFr
4、ameWnd类应用程序窗口类CFrameWnd是一个特殊的CWnd类,它或它的派生类对象要承担应用程序主窗口的任务它除了需要CWnd类的一些通用功能之外,还需要一些特殊功能。它也是其它子窗口对象的容器3.1.3CWinApp类MFC希望把程序的主函数的函数体部分也作为一个对象来处理,为此提供了应用程序类CWinApp,其类的继承关系为:CObject->CCmdTarget->CWinThread->CWinApp为了支持Windows多线程工作方式,MFC构建了一个线程类CWinThread。在此类中封装了一些用于线程管理的功能函数提醒:MFC把原来在CWinApp类中定义的CWn
5、d*类型的数据成员m_pMainWnd(指向程序主窗口对象的指针)放在CWinThread类中定义CWinApp类中定义了三个可以重写的虚函数InitApplication()InitInstance()--程序创建和显示窗口Run()程序设计时,必须以CWinApp类为基类派生自己的应用程序类,并根据情况重写InitInstance()3.2最简单的MFC程序实例3.2.1程序的编写例3-1使用早期的MFC应用程序框架类设计的一个最简单的Windows应用程序,它只创建一个窗口通过计算机演示这个最简单的程序的编写其中需要自己书写的代码如下:#include//
6、由CWinApp派生的应用程序类声明classMyApp:publicCWinApp{public:BOOLInitInstance();//声明InitInstance(),重写虚函数需要重新声明};//定义应用程序类的全局对象MyApptheApp;//InitInstance()的实现BOOLMyApp::InitInstance(){CFrameWnd*pMainWnd=newCFrameWnd;//创建窗口框架类的对象pMainWnd->Create(NULL,"BasicMFCApplication");pMainWnd->ShowWindow(m_nCmdShow);p
7、MainWnd->UpdateData();m_pMainWnd=pMainWnd;returnTRUE;}3.2.2程序主函数的代码在前面的源文件中,没有看到主函数,那么主函数哪里去了?主函数是自动生成的。其代码能过调试的过程可以见到3.3应用程序的文档/视图结构目前,用MFC设计的Windows应用程序几乎都采用文档/视图结构。这种新程序框架与原先简单程序框架相比,其最重要的区别是原来的应用程序主窗口对象被拆分窗口框架类CFrameWnd对象、视图类C
此文档下载收益归作者所有