Visual C++程序设计教程(第二版)课件:构造应用程序框架.ppt
VisualC++程序设计教程-VisualC++程序设计教程-VisualC++程序设计教程-VisualC++程序设计教程-VisualC++程序设计教程-VisualC++程序设计教程-VisualC++程序设计教程-VisualC++程序设计教程-VisualC++程序设计教程-VisualC++程序设计教程-VisualC++程序设计教程-构造应用程序框架3.1单文档应用框架 所谓的单文档(SDI)界面应用程序,是指在应用程序中一次只能打开一个文件处理。打开下一个文件之前,必须先关闭上一个打开的文件,才能执行下一个打开操作。对于涉及文档较少的程序,只容许处理单个文档的程序或执行其它功能。*VisualC++程序设计教程-*创建过程创建工程。按照前一章创建工程的步骤创建一个工程,类型为SDI,工程名为Eg3_1,其他选项取默认值。单击“OK”按钮,AppWizard就开始创建应用的子目录、文件和类。添加自己的代码:*VisualC++程序设计教程-*创建过程(续)扩充Eg3_1View.cpp中的OnDraw成员函数:voidCEg3_1View::OnDraw(CDC*pDC){ CEg3_1Doc*pDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere pDC-TextOut(60,100,Hello,WelcometoVisualC++6.0!);}*VisualC++程序设计教程-*创建过程(续)更改应用程序的标题:选择工作区中ResourceVies标签,展开Eg3_1Resources|StringTable,双击StringTable,弹出字符串资源表。双击IDR_MAINFRAME项,弹出StringProperties对话框。在Caption编辑框中将标题修改为“单文档应用程序\nEg3_1”。编译、链接并运行。*VisualC++程序设计教程-*CEg3_1App应用程序运行过程CWinApp类创建的实例theApp,整个程序有且只有一个,一切由它开始,最后以它结束。VisualC++所产生的代码首先通过初始化数据段来建立全局变量,以及建立一些MFC内部使用的对象,然后执行CWinApp类的构造函数。*VisualC++程序设计教程-*CEg3_1App应用程序运行过程(续)一旦所有静态对象的构造函数都执行完毕,运行时间库就会调用WinMain()函数,该函数初始化MFC应用,并调用CWinApp类的InitInstance()函数。完成了这些工作后,WinMain()函数调用CWinApp类的Run()函数,通常默认为CWinThread::Run(),用来得到应用程序的消息循环,或称消息队列。*VisualC++程序设计教程-*CEg3_1App应用程序运行过程(续)当程序接收到WM_QUIT消息,就意味着程序终止。这时,MFC会调用CWinApp类的ExitInstance(),然后是静态对象的析构函数,包括CWinApp对象,然后将控制权交还操作系统。*VisualC++程序设计教程-*3.2多文档应用框架 多文档(MDI)接口应用程序是指一个应用程序可以同时打开多个文件进行处理。 MDI是大多数应用程序采用的形式。Microsoft公司的Word应用软件就是一个典型的多文档应用。*VisualC++程序设计教程-*单文档应用程序和多文档应用程序的比较在MDI程序中许多程序的细节是与SDI程序是相同的。在MDI程序中使用了CMultiDocTemplate模板,以便程序能够处理多个文档,同时也将视图和文档类连接到该模板及CChildFrame类,CChildFrame类支持出现在主窗口内部的MDI子窗口。*VisualC++程序设计教程-*3.3基于对话框的应用框架 基于对话框的应用程序,是以对话框为形式的应用程序,它对于那些涉及文档较少,主要是交互式操作的应用程序来说比较合适。 基于对话框的应用框架和前面介绍的基于文档的应用框架有很大的区别。*VisualC++程序设计教程-*创建过程在AppWizard的第一步,即MFCAppWizard--Step1中,选中“Dialogbased”单选框按钮。在第四步,A