




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章MFC应用程序概述2.1Windows应用程序概述2.2MFC应用程序框架2.3消息映射和消息处理2.4程序调试2.5应用程序实例,VisualC编程和应用程序教程,2,2.1Windows应用程序概述,Windows应用程序在Windows操作系统上运行,与DOS应用程序本质上不同。所有Windows应用程序都由消息驱动,消息处理是所有Windows应用程序的核心。3,2.1.1窗口,窗口是用户界面中最重要的部分。屏幕上与一个应用程序相对应的矩形区域。这是用户和创建该窗口的应用程序之间的可视界面。4、2.1.2消息和事件;Windows是基于事件的消息驱动系统,Windows应用程序根据“事件”“消息”“处理”非顺序机制运行。消息是用于说明执行Windows特定操作的事件的信息。因为事件是消息,事件产生消息,消息应对事件。所谓消息处理的本质是事件的处理。当发生事件(如鼠标单击、键盘输入和菜单命令执行)时,Windows会根据特定事件生成相应的消息,并将这些消息同时发送到指定应用程序的消息队列。应用程序将消息从消息队列中出队,并根据消息进行不同的处理。5,2.1.3基本数据类型,Windows编程中常用的基本数据类型的别名。6,7,2.1.4句柄,句柄是Windows编程的基础,所谓句柄是Windows中使用的非迭代整数。句柄主要用于标识应用程序中的一个对象,如窗口、实例、菜单、内存、输出设备、控件或文件。Windows常见的句柄类型如下表所示。8,9由于相应的MFC类封装了句柄,因此大多数情况下不再需要访问句柄。示例说明了使用MFCAppWizardexe创建应用程序框架的步骤,其中包括10,2.2MFC应用程序框架。创建2.2.1 MFC应用程序框架,11,示例2.1创建SDI单文档应用程序Li2_1,运行程序后,通过消息框显示“单文档应用程序!”的提示信息。(1)选择File菜单下的New菜单项后,将出现New对话框。单击,输入,项目名称,保存文件路径,默认值,12,单文档界面(SDI)应用程序。应用程序运行时,只能打开一个文档。多文档界面(MDI)应用程序。应用程序可以同时打开多个文档。基于对话框的应用程序。应用程序显示处理用户输入的简单对话框;(2)MFCAppWizard-Step1对话框主要用于选择应用程序类型。AppWizard可以创建三种类型的应用程序框架:语言类别,是否支持文档/视图结构,13,(3)MFCAppWizard-Step2of6对话框主要用于选择应用程序支持的数据库方法。不包括数据库支持,包括最小数据库支持,创建该表的数据库类和视图类,不添加标准文件支持,创建该表的数据库类和视图类,添加标准文件支持,以及、14,(4) MFCAppWizard-Step3of6对话框中应用程序支持的复合文档类型,不支持复合文档,应用程序用作复合文档容器,包含可以链接或嵌入的ActiveX对象,应用程序只能创建可以嵌入到其他应用程序中的文档,但不能单独运行应用程序,应用程序可以单独运行,也可以作为对象嵌入到其他应用程序中,应用程序可以将嵌入的ActiveX对象作为容器嵌入,MFCAppWizard-steppizard,添加工具栏,自动生成状态栏,添加打印和打印预览菜单项,将索引自动添加到帮助菜单和使用帮助菜单项,以三维形式显示应用程序外观,消息应用程序界面,应用程序TCP/IP通信功能,传统样式工具栏,InternetExplorer样式工具栏,创建标准MFC应用程序,创建类似于Windows资源管理器样式的应用程序,向生成的程序框架的源文件中添加说明,不订阅说明信息,使用动态链接库,使用静态链接库,17,(7)MFCAppWizard-steppwizard、设置类名、设置文件名、18、(8)在项目工作区中打开ClassView类视图,然后单击CLi2_1View类左侧的“”展开视图类,双击打开OnDraw()函数并添加代码。void CLI 2 _ 1 view 3363603360 ondraw(CDC * PDC) clin 2 _ 1 doc * pdoc=get document();ASSERT _ VALID(pDoc);/todo : adddrawcodfornativedataheremessagebox(单一文件应用程式!),“消息框”,MB _ icon exchlamation | MB _ ok cancel);,19,(9)从Build菜单中选择BuildLi2_1.exe菜单项,编译并链接项目以生成可执行文件。从Build菜单中选择ExecuteLi2_1.exe菜单命令以运行程序。20、MFC应用程序框架结构类的继承关系:2.2.2MFC应用程序框架结构类,21,1.CObject类CObject是MFC类库的根,它描述了几乎所有MFC类的某些公共属性,并为派生它的所有类提供了三个重要属性:序列化支持、运行时类信息支持以及诊断和调试支持,2 .CCmdTarget类命令类CCmdTarget是CObject的子类,它是具有消息映射属性的MFC库中所有类的公共基类。从CCmdTarget派生的类可以在程序运行时动态创建对象和处理命令消息。22,3.CWinApp类应用程序类CWinApp是CWinThread的子类,用于封装初始化、运行和终止应用程序的代码。您可以在此派生自己的应用程序类。4 .CWnd类窗口类CWnd为MFC中的所有窗口类提供基本功能。从CWnd派生的类可以有自己的窗口,您可以控制它。23,5.CFrameWnd类CFrameWnd类是CWnd类的派生类。所有其它帧窗口类的基类,主要用于管理一个窗口。CFrameWnd类的对象是包含边框、标题栏、菜单、最大化按钮、最小化按钮和活动视图的框架窗口。对于多文档接口,CFrameWnd类支持使用两个派生类CMDIFrameWnd和CMDIChildWnd的单个文档接口。CMDIFrameWnd类用于MDI的主窗口,CMDIChildWnd类用于MDI的子窗口。24,6.CView类视图类CView是CWnd类的子类。视图类和派生类用于管理帧窗口的客户区域。7.CDocument类文档类CDocument负责装载和维护文档。文件包含应用程式的工作结果或偏好设定资料等,也可以是程式必须储存的任何内容。25,MFC应用程序构建Windows应用程序的基本框架,方法是使用上述类作为基类派生新类,而不是直接操作上述类。例如,应用程序Li2_1的类与这些基类的派生关系:26,1。在应用程序向导生成的文件下,以示例2.1中创建的应用程序Li2_1为例,说明了MFCAppWizardexe向导生成的各种文件和功能。2.2.3MFC应用程序分析、27、(1)头文件和实现文件MainFrm.h和MainFrm.cpp:定义和实现窗口框架类CMainFrame。CLi2_1Doc.h和CLi2_1Doc.cpp:定义和实现文档类CLi2_1Doc。CLi2_1View.h和CLi2_1View.cpp:定义和实施视图类CLi2_1View。CLi2_1.h和CLi2_1.cpp:定义和实施应用程序类CLi2_1App。Resource.h:定义项目的所有资源标识符,并为资源ID分配整数值。StdAfx.h和StdAfx.cpp:预编译的头文件CLi2_1。可以设置PCH和预定义类型文件StdAfx.obj。28、(2)资源文件Li2_1.rc和li2 _ 1.rc2: li2 _ 1.rc文件是程序使用的所有Windows资源的列表。Li2_1.ico:用于应用程序中图标的图标文件。Li2_1Doc.ico:应用程序的文档图标文件。文档图标通常显示在多文档程序界面中。Toolbar.bmp:工具栏按钮的位图文件。29、(3)项目工作空间文件和项目文件Li2_1.dsw:保存有关包含在当前工作空间中的项目的信息。Li2_1.dsp:包含有关当前项目的设置、项目中的文件等信息。30,(4)其他文件Li2_1.clw:此文件是类信息文件。这存储了ClassWizard编辑现有类或添加新类所需的类信息,还存储了创建、编辑消息映射和成员函数所需的信息。ReadMe.txt:这是专案读我档案。主要介绍文件创建的内容和功能、添加用户代码、更改语言使用方法等。31,2。启动应用程序运行进程1:以创建应用程序对象theApp,然后调用应用程序类的构造函数以初始化对象theApp。第二,应用程序框架调用MFC提供的AfxWinMain()基本函数。1.AfxWinMain()基本函数,它首先调用全局函数AfxGetApp(),从而指向theApp(创建的应用程序对象)的指针pApp;2.然后,使用此指针调用theApp的成员函数InitInstance()来初始化应用程序。在、32、应用程序初始化期间,将配置文档模板,生成初始文档、视图和主框架窗口,并生成工具栏和状态栏。3.InitInstance()函数运行完成后,WinMain()函数调用成员函数Run()以进入消息处理循环。4.函数Run()收到WM_QUIT消息。MFC首先调用CWinApp类的成员函数exit instance(),然后调用静态对象的析构函数。第三:退出应用程序,将控制权移交给操作系统。33,消息对话框,简单的对话框,无需用户创建即可调用消息对话框函数使用。VisualC使用int afxmessagebox (lpctstrlptext,uint ntype=MB _ ok,uintidhelp=0)的原型提供三个消息对话框函数。Int messagebox (hwnd hwnd、lpctstrlptext、lpctstrlpcaption、uint ntype);int cwnd 33603360 messagebox(lpctstrlptext,lpctstrlpcaption=null,uint nttype=MB _ ok);34,35,36,2.2.4文档/视图结构、文档/视图体系结构是MFC应用程序框架结构的基石,该结构利用文档对象存储应用程序中的数据,并依赖视图对象显示数据。文件与检视的关系是一对多关系。也就是说,文档中的数据可以以不同的方式显示。37,38,2.3消息映射和消息处理;Windows消息主要有三种类型:标准Windows消息、控制消息和命令消息。1.标准Windows消息除WM_COMMAND外,具有“WM_”前缀的所有消息都是标准Windows消息;由窗口类或视图类处理。CWnd类具有预定义的默认处理函数。2.3.1消息的类别和说明;39;标准Windows消息分为键盘消息、鼠标消息和窗口消息三类。(1)键盘消息键盘消息与键盘上特定的键操作相关联。典型的键盘消息包括:WM_KEYDOWN,WM_KEYUP:按下并释放非系统键时生成的消息。WM_CHAR:输入非系统文字时产生的讯息。40,(2)鼠标消息鼠标消息包括鼠标单击、双击、拖动等。常用的鼠标消息包括:WM_MOUSEMOVE:随鼠标移动的消息。WM_RBUTTONDOWN:右键单击时生成的消息。WM_LBUTTONDOWN:鼠标左键单击时生成的消息。WM_LBUTTONDBLCLICK:双击鼠标时生成的消息。41、(3)窗口消息窗口消息通常与创建窗口、绘制窗口、移动窗口和销毁窗口等操作相关。在MFC应用程序中,窗口消息由视图类、窗口类及其派生类处理。42,2。控件消息控件消息指明控件或其他子窗口发送到父窗口的WM_COMMAND消息。与其他标准Windows消息一样,控制消息必须在视图类、窗口类中进行处理。但是,当用户单击按钮控件时,发出的控件通知消息BN_CLICKED将被视为命令消息。,43,3。命令消息命令消息是由用户界面对象(例如菜单项、工具栏按钮、快捷键等)发出的WM_COMMAND消息。与其他消息不同,命令消息可以由更广泛的对象(如文档、文档模板、应用程序对象、窗口和视图)处理。MFC消息映射机制,使用消息映射处理44、2.3.2MFC消息;消息映射机制包含一组消息映射宏,用于将Windows消息与消息处理函数相关联。从CCmdTarget类派生的任何类都可以有自己的消息映射。有三个宏与MFC消息映射机制相关联:DECLARE _ MESSAGE _ MAP()begin _ MESSAGE _ MAP(my class,mybaseclass) end _ message _ map()该宏表示为每个处理函数编写的类声明后有一个消息映射条目,该条目是该类的成员函数。然后使用BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()宏在类的实现源文件中定义消息映射。MFC应用程序MESSAG_MAP消息映射为46,BEG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政治●海南卷丨2022年海南省普通高中学业水平选择性考试高考政治真题试卷及答案
- 2025年第二季渣打香港中小企领先营商指数
- 苹果枝条纳米生物炭在土壤中的迁移行为及对水氮运移的影响
- Brand KPIs for neobanking Freo in India-英文培训课件2025.4
- 汽车传感器与检测技术电子教案:光电式燃油流量传感器电子教案
- 培训学员综合管理制度
- 物理中考一轮复习教案 第五讲 平面镜-光的反射
- 介绍英语活动方案
- 仓储qc活动方案
- 河北省沧州市沧县2023-2024学年四年级下学期数学期末检测试卷(含答案)
- 24春国家开放大学《土地资源学》形考作业1-4参考答案
- 电梯突发事件应急演练
- 人教版八年级数学下册期末试卷培优测试卷
- (2024年)肺栓塞的护理课件
- 刑事书记员培训课件
- 西餐厅筹备计划书
- 故事绘本彼得兔的故事
- 骼金-纳米晶胶原基人工骨在颅骨修复中的应用课件
- GJB9001C标准内审员考试题
- 新课标视域下的小学数学大单元教学
- 设计进度控制措施
评论
0/150
提交评论