《VisualC课件第3章》由会员分享,可在线阅读,更多相关《VisualC课件第3章(19页珍藏版)》请在金锄头文库上搜索。
1、Visual,C+课件第课件第3章章3.1 单文档应用框架 所谓的单文档(SDI)界面应用程序,是指在应用程序中一次只能打开一个文件处理。打开下一个文件之前,必须先关闭上一个打开的文件,才能执行下一个打开操作。对于涉及文档较少的程序,只容许处理单个文档的程序或执行其它功能 。8/20/20242Visual C+ 程序设计教程第3章创建过程 1.创建工程。按照前一章创建工程的步骤创建一个工程,类型为SDI,工程名为Eg3_1,其他选项取默认值。2.单击“OK”按钮,AppWizard就开始创建应用的子目录、文件和类。 3.添加自己的代码: 8/20/20243Visual C+ 程序设计教程第
2、3章创建过程(续)扩充Eg3_1View.cpp中的OnDraw成员函数:void CEg3_1View:OnDraw(CDC* pDC)CEg3_1Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herepDC-TextOut (60,100,Hello,Welcome to Visual C+ 6.0!); 8/20/20244Visual C+ 程序设计教程第3章创建过程(续)4.更改应用程序的标题 :1.选择工作区中ResourceVies标签,展开Eg3_1 Reso
3、urcesString Table,双击String Table,弹出字符串资源表 。2.双击IDR_MAINFRAME项,弹出String Properties对话框。3.在Caption编辑框中将标题修改为“单文档应用程序nEg3_1”。5.编译、链接并运行。 1. 8/20/20245Visual C+ 程序设计教程第3章CEg3_1App应用程序运行过程 CWinApp类创建的实例theApp,整个程序有且只有一个,一切由它开始,最后以它结束。Visual C+所产生的代码首先通过初始化数据段来建立全局变量,以及建立一些MFC内部使用的对象,然后执行CWinApp类的构造函数。 8/2
4、0/20246Visual C+ 程序设计教程第3章CEg3_1App应用程序运行过程(续)一旦所有静态对象的构造函数都执行完毕,运行时间库就会调用WinMain()函数,该函数初始化MFC应用,并调用CWinApp类的InitInstance()函数。完成了这些工作后,WinMain()函数调用CWinApp类的Run()函数,通常默认为CWinThread:Run(),用来得到应用程序的消息循环,或称消息队列。 8/20/20247Visual C+ 程序设计教程第3章CEg3_1App应用程序运行过程(续)当程序接收到WM_QUIT消息,就意味着程序终止。这时,MFC会调用CWinApp
5、类的ExitInstance(),然后是静态对象的析构函数,包括CWinApp对象,然后将控制权交还操作系统。 8/20/20248Visual C+ 程序设计教程第3章 3.2 多文档应用框架 多文档(MDI)接口应用程序是指一个应用程序可以同时打开多个文件进行处理。MDI是大多数应用程序采用的形式。Microsoft公司的Word应用软件就是一个典型的多文档应用。 8/20/20249Visual C+ 程序设计教程第3章单文档应用程序和多文档应用程序的比较 在MDI程序中许多程序的细节是与SDI程序是相同的。在MDI程序中使用了CMultiDocTemplate模板,以便程序能够处理多个
6、文档,同时也将视图和文档类连接到该模板及CChildFrame类,CChildFrame类支持出现在主窗口内部的MDI子窗口。 8/20/202410Visual C+ 程序设计教程第3章 3.3 基于对话框的应用框架 基于对话框的应用程序,是以对话框为形式的应用程序,它对于那些涉及文档较少,主要是交互式操作的应用程序来说比较合适。基于对话框的应用框架和前面介绍的基于文档的应用框架有很大的区别。 8/20/202411Visual C+ 程序设计教程第3章创建过程 在AppWizard的第一步,即MFC AppWizard -Step 1中,选中“Dialog based”单选框按钮。在第四步
7、,AppWizard会显示出它将帮助用户创建的类及属性。在这个基于对话框的应用中只有两个类被创建。一个是应用类CEg3_3App,另一个是对话框类CEg3_3Dlg。 8/20/202412Visual C+ 程序设计教程第3章创建过程(续)修改对话框资源:在Text properties对话框中,将Caption框中的“TODO: 在这里设置对话控制。”删除,改成为“Hello,Welcome to Visual C+!”。编译、链接 、运行。 注意:基于对话框的应用框架和基于文档的应用框架的区别在于实现对话框的第一步是创建一个对话框对象dlg,然后通过调用对话类的成员函数DoModal()
8、来显示对话框。 8/20/202413Visual C+ 程序设计教程第3章3.4 程序运行流程分析 Windows的编程模式:Windows程序运行总是由WinMain()函数开始,该函数主要是建立应用程序的主窗口。Windows程序通过操作系统发送的消息来处理用户输入,程序的主窗口中需要包含处理Windows所发送消息的代码。 8/20/202414Visual C+ 程序设计教程第3章MFC应用程序的运行过程 8/20/202415Visual C+ 程序设计教程第3章MFC应用程序的运行过程(续)MFC的应用程序运行过程如下:1.应用程序定义一个应用类全局对象。2.应用类对象的构造函数
9、开始执行。3.构造函数执行完后,调用初始化函数InitInstance()。4.在函数InitInstance()中,构造文档模板。5.构造文档模板时,按照生成一个文档的顺序先产生一个最初的文档、视主框架。6.函数InitInstance()生成工具条和状态条,以及其它用户需要的工具。 7.函数InitInstance()执行完成后,应用程序处于等待消息的状态。 8/20/202416Visual C+ 程序设计教程第3章三种应用程序框架的异同 相同:每个应用程序的应用类都会自动创建一个InitInstance()函数 相异:单文档应用程序中,应用类的对象由应用框架构造,使用单文档模板类CSi
10、ngleDocTemplate的对象来构造文档模板。 8/20/202417Visual C+ 程序设计教程第3章三种应用程序框架的异同(续)MDI应用程序中,应用类的对象同样也由应用框架构造 ,使用多文档模板类CMulitDocTemplate对象来构造文档模板。基于对话框的应用程序中,首先在函数中生成一个对话框对象,然后再通过DoModal()函数来调用和显示这个对话框。 8/20/202418Visual C+ 程序设计教程第3章3.5 小结 本章介绍了MFC的三种基本应用框架,并通过三个简单的“Hello,Welcome to C+ 6.0!”实例来说明这三个应用框架的区别。 8/20/202419Visual C+ 程序设计教程第3章