单程序结构课件.ppt
《单程序结构课件.ppt》由会员分享,可在线阅读,更多相关《单程序结构课件.ppt(40页珍藏版)》请在三一办公上搜索。
1、1,基于MFC进行应用开发,使用VC+的应用程序向导MFC AppWizard可以开发:单文档Single document 多文档Multiple document对话框Dialog based三种类型的应用程序。,本讲开始学习单文档应用程序的开发技术,2,单文档应用案例1的程序运行界面,3,本讲主要内容,利用向导建立一个单文档应用程序框架 向导生成的核心类及其功能 文档/视图 文字的显示 菜单,4,单文档案例1文本显示案例,利用MFC建立一个单文档应用程序,用于在客户区显示文本。程序的主要功能包括:使用菜单命令按照指定文本内容和坐标位置在客户区显示文本保存文本内容等。,5,利用向导建立一个
2、单文档应用程序框架,【例9-1】利用MFC AppWizardexe向导生成一个SDI单文档应用程序MyTextOut。,6,【编程步骤】 (1)在Visual C+ IDE中执行File|New命令,打开New对话框。在项目类型列表框中选择MFC AppWizardexe项,在Project name框中输入项目名称,本例为MyTextOut。选择好合适的路径。(2)在MFC AppWizard-Step 1对话框中选择Single document项,向导将会创建一个单文档应用程序框架,在本例中,以下的各个步骤使用向导提供的默认选项即可。,利用向导建立一个单文档应用程序框架,7,利用向导建
3、立一个单文档应用程序框架,编译、连接、运行MFC AppWizardexe向导创建的应用程序MyTextOut。运行结果如图所示。,框架(菜单栏、工具栏、状态栏),客户区,单文档程序要包含文档,并且一次只能打开一个文档,其框架是指菜单栏、工具栏、状态栏等界面元素,客户区则用于展示用户文档。,8,向导生成的核心类及其功能,MFC应用程序框架实质上是一个标准的Windows应用程序,它具有标准的窗口、菜单栏和工具栏。MFC AppWizardexe向导为一般的SDI应用程序生成了五个核心类,它们分别是:应用程序类CMyTextOutApp框架窗口类CMainFrame文档类CMyTextOutDo
4、c视图类CMyTextOutView文档模板类CSingleDocTemplate,9,向导生成的核心类及其功能,一般应用程序框架中所有类的名字由MFC AppWizardexe向导根据一定的规则自动命名。应用程序框架中类(框架窗口类例外)的命名规则一般遵照如下要求:Class Name = C + ProjectName + ClassType,10,向导生成的核心类及其功能,1应用程序类CMyTextOutAppCMyTextOutApp类是MFC的CWinApp类的派生类。它的主要功能有:应用程序的初始化;程序的启动;程序运行结束时的清理工作。应用程序对象theApp是一个唯一的全局变量
5、,它的主要功能是通过调用WinMain()主函数启动程序的运行。MFC应用程序框架也有一个作为程序入口点的WinMain()主函数,但在源程序中看不见该函数,它在MFC中已定义好并同应用程序相链接。,11,向导生成的核心类及其功能,2框架窗口类CMainFrameCMainFrame类是MFC的CFrameWnd类的派生类。它主要负责创建标题栏、菜单栏、工具栏和状态栏。不同的SDI应用程序,其框架窗口类名和文件名是统一的。CMainFrame类中声明了框架窗口中的工具栏m_wndToolBar、状态栏m_wndStatusBar两个成员变量和四个成员函数。,12,向导生成的核心类及其功能,3文
6、档类CMyTextOutDoc类CMyTextOutDoc是MFC的CDocument类的派生类,它用于管理和维护数据,包括应用程序数据的保存和装载,实现文档的序列化功能。4视图类CMyTextOutView类CMyTextOutView是MFC的CView类的派生类,它主要负责客户区文档数据的显示,以及如何进行人机交互。,13,向导生成的核心类及其功能,5文档模板类CSingleDocTemplate文档、视图、框架类和所涉及的资源形成了一种固定的联系,这种固定的联系就称为文档模板。文档模板类CSingleDocTemplate是MFC的CDocTemplate类的派生类CSingleDoc
7、Template文档模板类在应用程序中有着非常重要的作用,是它将原本独立的文档、视图和框架窗口对象联系在一起。,14,文档/视图,为了统一和简化数据处理,基于MFC的应用程序通常采用文档/视图结构。在MFC文档/视图结构中,有关数据处理的工作可以分为数据的处理和数据的显示两个部分。文档负责数据的处理、数据的维护以及数据的存储,视图则负责数据的显示和数据的编辑,客户区消息的响应和处理等工作,即充当了文档与用户之间的交互界面。,15,文档/视图,文档(document)是MFC应用程序中所处理数据的集合,包括文本、图形、图像和表格等类型。视图(view)是文档在应用程序窗口中的一个映像。视图就如一
8、个观景器,用户通过视图看到文档,通过视图修改文档。一个视图是一个没有边框的窗口,它位于主框架窗口中的客户区。视图是文档对外显示的窗口,但它并不能完全独立,它必须依存在一个框架窗口内。,16,文档/视图,当打开某种类型的文件时,应用程序必须确定哪一种文档模板用于解释这种文件。在初始化程序时,必须首先注册文档模板,以便程序利用这个模板来完成主框架窗口、视图、文档对象的创建和资源的装入。 BOOL CMyTextOutApp:InitInstance() CSingleDocTemplate* pDocTemplate; /声明文档模板指针pDocTemplate = new CSingleDocT
9、emplate( /创建文档模板对象IDR_MAINFRAME, /文档模板使用的资源IDRUNTIME_CLASS(CMyTextOutDoc), /创建文档对象RUNTIME_CLASS(CMainFrame), / 创建主SDI框架窗口对象RUNTIME_CLASS(CMyTextOutView); /创建视图对象AddDocTemplate(pDocTemplate); /将文档模板加入链表 ,17,表9-1 MFC应用程序对象之间的相互访问方法,18,文字的显示,【例9-2】以例9-1的单文档应用程序MyTextOut为基础,添加代码实现文本输出。程序运行后在视图窗口显示文本串“这是
10、我的第一个单文档应用程序!”。,19,文字的显示,【编程步骤】(1)本例需要在视图类的成员函数OnDraw()中添加显示文本的代码来实现屏幕输出。在例9-1生成的框架代码基础上,打开Workspace窗口单击ClassView标签,找到CMyTextOutView类,点击其左边的“+”展开该类,双击其成员函数OnDraw(),在编辑窗口出现该成员函数代码,在指定位置手工添加如下粗体所示代码。,20,文字的显示,void CMyTextOutView:OnDraw(CDC* pDC) CMyTextOutDoc* pDoc = GetDocument(); /获得文档类对象的指针 ASSERT_
11、VALID(pDoc); /检查该指针是否为空 / TODO: add draw code for native data here /在视图内的设备坐标(150,100)位置输出文本 pDC-TextOut(150,100,“这是我的第一个单文档应用程序!);,TextOut()是CDC类的成员函数。其功能是在指定的位置输出文本串。函数原型如下:CDC: TextOut( int x, int y, const CString& str )其中参数x,y指定文本输出位置坐标。 参数str指定输出内容。,MFC应用程序通常在视图类CView的成员函数OnDraw()中实现屏幕输出,因为在重画窗
12、口时会自动调用函数OnDraw(),这样才能保证显示的内容在每次重画窗口时都能显示出来。,GetDocument()是视图类的成员函数,调用它可以返回与视图相关联的文档对象的指针,利用这个指针可以访问文档类及其派生类的公有成员。通常的用法如下:CMyTextOutDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);,ASSERT_VALID()是MFC库中的断言 。ASSERT_VALID()的用法是:ASSERT_VALID(一个从CObject类派生的对象指针)功能:用于对C+对象或指针进行有效性判断,如果出错,会弹出带断言信息(程序,模块, asse
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序结构 课件
链接地址:https://www.31ppt.com/p-1405881.html