【教学课件】第4章文档应用程序.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《【教学课件】第4章文档应用程序.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第4章文档应用程序.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章 文档应用程序第3章讲述了如何使用SDK开发窗口应用程序。本章将介绍如何使用MFC开发窗口应用程序。MFC(Microsoft Foundation Classes,微软基础类库)通过面向对象的方式将SDK进行封装,使用户在使用API函数时更加方便简单。使用VC+6.0可以创建下面3种MFC应用程序:单文档应用程序;多文档应用程序;对话框应用程序。单文档程序和多文档程序类似,都是文档应用程序。本章主要介绍单文档应用程序的开发方法,对话框应用程序将会在后面的章节中继续讲解。4.1 使用AppWizard应用程序向导创建单文档程序本节将使用VC+6.0提供的工具AppWizard应用程序向导
2、来创建一个单文档的程序,具体操作步骤如下。4.2 MFC程序框架分析上一节创建的单文档程序的类视图如图4.11所示。当使用应用程序向导创建单文档应用程序完成后,程序中会自动包含5个类,其作用如下。CAboutDlg关于对话框类:管理关于对话框。CEg_1_single_docApp应用程序类:管理整个应用程序。CEg_1_single_docDoc文档类:通常和视图窗口一同使用,后面会介绍。CEg_1_single_docView视图类:管理视图窗口。CMainFrame框架类:管理框架窗口。4.2.1 theApp全局对象theApp是应用程序类CEg_1_single_docApp的全局对
3、象。由于全局对象会在入口函数之前被构造,所以theApp可以使MFC程序在执行WinMain函数之前做一些初始化工作(通过CEg_1_single_docApp父类CWinApp的构造函数完成)。同时,框架中很多地方会用到应用程序类的成员,其生命周期也是从程序开始到程序结束,所以称其为应用程序类。4.2.2 MFC中的WinMain函数MFC程序将WinMain函数的定义封装了起来,原因是MFC希望用户不再关注程序入口,只需处理各种消息即可。实际上,WinMain函数被定义在VC安装目录中的VC98MFCSRCAPPMODUL.CPP文件内(MFC的源代码都存放在VC98MFCSRC目录内),
4、其相应代码如下。extern C int WINAPI_tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)/call shared/exported WinMainreturn AfxWinMain(hInstance,hPrevInstance,lpCmdLine,nCmdShow);4.2.3 窗口的句柄在MFC中,每个窗口都对应一个窗口类。例如框架窗口对应的是CMainFrame类,视图窗口对应的是CEg_1_single_docView。所有的窗口类都是从CWnd派生而来
5、,如图所示。CWnd的成员m_hWnd表示对应窗口的句柄。4.3 框架窗口框架窗口是所有其他窗口的父窗口,使用框架窗口可以轻松地管理其子窗口,如标题栏、菜单栏。CMainFrame框架窗口类用来管理框架窗口。4.3.1 框架窗口的重要成员函数CMainFrame类 中 有 2个 比 较 重 要 的 成 员 函 数,即 OnCreate和PreCreateWindow。通过跟踪调试可以得知,PreCreateWindow会在OnCreate之前被调用。实际上,PreCreateWindow是在创建窗口之前调用的,其参数是一个CREATESTRUCT结构体类型的变量。通过修改这个变量中的字段可以达
6、到预定义窗口样式的作用。实际上,CREATESTRUCT结构体内的字段就是CreateWindow函数所需要的参数。框架代码中PreCreateWindow的默认定义如下。BOOL CMainFrame:PreCreateWindow(CREATESTRUCT&cs)if(!CFrameWnd:PreCreateWindow(cs)return FALSE;/TODO:Modify the Window class or styles here by modifying/the CREATESTRUCT csreturn TRUE;4.3.2 改变窗口状态上一小节介绍过,通过修改PreCrea
7、teWindow函数的参数(CREATESTRUCT结构体变量)可以在窗口创建之前修改窗口的样式。下面介绍一些其他的方法。(1)使用应用程序向导修改窗口样式。前面介绍过,应用程序向导的第4、第5步也可以预先设置窗口的样式。(2)在应用程序类的InitInstance函数中修改窗口显示方式。由于框架窗口的显示是在InitInstance时进行的。(3)窗口创建后样式的改变。如果窗口已经被创建,修改窗口样式就需要使用API函数实现。以下API函数可以修改窗口的一些外观。4.4 文档模板MFC单文档或多文档程序使用文档模板将各个类组织在一起,例如本例在应用程序类的InitInstance函数中创建了
8、文档模板,对应代码如下。BOOL CEg_1_single_docApp:InitInstance()/Register the applications document templates.Document templates/serve as the connection between documents,frame windows and views.CSingleDocTemplate*pDocTemplate;pDocTemplate=new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CEg_1_single_docDoc),R
9、UNTIME_CLASS(CMainFrame),/main SDI frame windowRUNTIME_CLASS(CEg_1_single_docView);AddDocTemplate(pDocTemplate);4.5 文档的序列化序列化是将用户的数据存储在文件中,并在需要时再从文件中将数据读取出来。与简单的文件读写不同,序列化可以保存数据的类型,甚至将一个类保存在文件中。4.5.1 MFC文档读写机制MFC文档程序中,文档的读写是在文档类中进行的,由文档类的Serialize函数完成,其默认代码如下。void CEg_1_single_docDoc:Serialize(CArch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 文档 应用程序
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内