




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Windows运用概述nWindows原理原理nWin32与与MFCn事件驱动与音讯驱动事件驱动与音讯驱动 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Windows原理nWindows-操作系统操作系统n什么是操作系统?什么是操作系统?n两大流派两大流派-unix和和windowsnUnixsolaris,bsd,linux和和macnWindowsos/2和和windowsn多义务、界面化、工具全、资料多多义务、界面化、工具全、资料多 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Microsoft
2、提供的编程接口nWin32 API是微软的操作系统是微软的操作系统Windows提供应开发人员的编程接口,提供应开发人员的编程接口,它决议了我们开发的它决议了我们开发的Windows运用程序运用程序的才干。的才干。 nMFC Microsoft Foundation Class Library是微软为开发人员提供的类库,是微软为开发人员提供的类库,在某种意义上是对在某种意义上是对Win32 API的封装的封装 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 APIAPI函数函数的功能的功能为运用程序为运用程序提供提供Windows系系统特殊函数统特殊函数及数据构造及数据构造Win运
3、用程序运用程序可以利用规范可以利用规范大量大量API函数函数调用系统功能调用系统功能是是Win系统与系统与Win运用程序运用程序间的规范程间的规范程序接口序接口窗口管理函窗口管理函数实现窗口数实现窗口的创建、挪的创建、挪动和修正功动和修正功能能系统效力函数系统效力函数:实现与操作:实现与操作系统有关的多系统有关的多种功能种功能图形设备图形设备(GDI)函数:函数:实现与设备无实现与设备无关的图形操作关的图形操作功能功能 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 采用交互式方法时,可视化开发平台给出了许多项选择用的对象,程采用交互式方法时,可视化开发平台给出了许多项选择用的对象
4、,程序员可选择所需对象并确定其属性,由此搭建起运用程序的序员可选择所需对象并确定其属性,由此搭建起运用程序的“大框架大框架,并可根据需求进一步编写必要的细节代码段,最后构成完好的运用,并可根据需求进一步编写必要的细节代码段,最后构成完好的运用程序程序Windows的的程序设计言语程序设计言语VCVBVJ都是都是“面向对象面向对象的程序设计言语的程序设计言语对象是对象是Windows的规范部件的规范部件窗口窗口菜单菜单按钮按钮对话框对话框程序模块程序模块编写编写Windows程序相当一部分工程序相当一部分工作是在创建对象和作是在创建对象和为对象属性赋值为对象属性赋值对象特征:具有规范形状和操作方
5、式对象特征:具有规范形状和操作方式编程方法编程方法传统编写法传统编写法-API交互式方法交互式方法-MFC 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Win32的来源nMicrosoft 32位平台的运用程序编程接口位平台的运用程序编程接口Application Programming Interface。 Mircrosoft的一切的一切32位平台都支持一致的位平台都支持一致的API,包括函数、构造、音讯、宏及接口。包括函数、构造、音讯、宏及接口。n基于基于Win32 API所开发的运用程序可以充分所开发的运用程序可以充分发掘发掘Windows的的32位操作系统的潜力,在能
6、位操作系统的潜力,在能胜利运转在各种平台上之外,也可以充分利用胜利运转在各种平台上之外,也可以充分利用每个平台特有的功能和属性。受平台限制每个平台特有的功能和属性。受平台限制 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Win32 API的分类n窗口管理窗口管理n窗口通用控制窗口通用控制nShell特性特性n图形设备接口图形设备接口n系统效力系统效力n国际特性国际特性n网络效力网络效力 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Win32数据类型 nHANDLE 32位无符号的整数,句柄位无符号的整数,句柄 nHINSTANCE 32位的无符号整数,实例句柄位
7、的无符号整数,实例句柄 nHWND 32位的无符号整数,窗口句柄位的无符号整数,窗口句柄 nHDC 设备描画背景的句柄设备描画背景的句柄 nLONG 32位带符号整数位带符号整数 nLPSTR 线性的线性的32位字符串指针位字符串指针 nWCHAR 16位的位的UNICODE字符字符 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 编写Windows运用程序之要点n(1)窗口的概念窗口的概念n(2)事件驱动的概念事件驱动的概念n(3)句柄句柄n(4)音讯音讯 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 窗口n系统管理运用程序的根本单位系统管理运用程序的根本单位n运用
8、程序与用户之间交互的接口环境运用程序与用户之间交互的接口环境nWin运用程序根本的操作单元运用程序根本的操作单元n编写一个编写一个Windows运用程序首先应创建运用程序首先应创建一个或多个窗口,随后运用程序的运转一个或多个窗口,随后运用程序的运转过程即是窗口内部、窗口与窗口之间、过程即是窗口内部、窗口与窗口之间、窗口与系统之间进展数据处置与数据交窗口与系统之间进展数据处置与数据交换的过程。换的过程。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 窗口边境窗口边境任务区任务区控制菜单框控制菜单框下拉菜单下拉菜单程度滚动条程度滚动条垂直滚动条垂直滚动条最大化按钮最大化按钮最小化按钮
9、最小化按钮标题栏标题栏 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 事件驱动nWindows程序设计是针对事件或音讯的程序设计是针对事件或音讯的处置,音讯是描画事件发生的信息处置,音讯是描画事件发生的信息(如按如按下鼠标或键盘下鼠标或键盘)nWindows程序的执行顺序取决于事件发程序的执行顺序取决于事件发生的顺序,程序的执行顺序是由顺序产生的顺序,程序的执行顺序是由顺序产生的音讯驱动的,但是音讯的产生往往生的音讯驱动的,但是音讯的产生往往并不要求有次序之分。并不要求有次序之分。n事件驱动编程方法事件驱动编程方法-交互式程序。交互式程序。 北北 京京 林林 业业 大大 学学 信
10、信 息息 学学 院院 句柄n句柄是一个句柄是一个4字节长的数值,用于标识运字节长的数值,用于标识运用程序中不同的对象和同类对象中不同用程序中不同的对象和同类对象中不同的实例的实例n运用程序经过句柄访问相应的对象信息运用程序经过句柄访问相应的对象信息n常用窗口按钮图标滚动条输出设备控制常用窗口按钮图标滚动条输出设备控制文件文件 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 常用句柄类型及其阐明常用句柄类型及其阐明HWNDHWND窗口句柄窗口句柄HDCHDC设备环境句设备环境句柄柄HBITMAPHBITMAP位图句柄位图句柄HCURSORHCURSOR光标句柄光标句柄HICONHIC
11、ON图标句柄图标句柄HFONTHFONT字体句柄字体句柄HMENUHMENU菜单句柄菜单句柄HPENHPEN画笔句柄画笔句柄HFILEHFILE文件句柄文件句柄HBRUSHHBRUSH画刷句柄画刷句柄HINSTANCEHINSTANCE 当前实例句柄当前实例句柄 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 音讯n Windows Windows运用程序利用运用程序利用WindowsWindows音讯音讯(Message)(Message)与运用程序及系统进展信息交与运用程序及系统进展信息交换。换。n音讯的组成:音讯的组成:n音讯号:由事先定义好的音讯名标识音讯号:由事先定义好的
12、音讯名标识n字参数字参数 :用于提供音讯的附加信息:用于提供音讯的附加信息n长字参数:用于提供音讯的附加信息长字参数:用于提供音讯的附加信息 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 typedef struct tagMSG HWND hwnd; 窗口句柄,为窗口句柄,为null,那么可检索一切驻留在音讯队列中的音讯,那么可检索一切驻留在音讯队列中的音讯 UINT message;音讯值,由音讯值,由Windows.h头文件中的宏定义来标识头文件中的宏定义来标识 WPARAM wParam;包含有关音讯的附加信息包含有关音讯的附加信息,不同音讯其值有所不同不同音讯其值有所不
13、同 LPARAM lParam; DWORD time; 指定音讯送至队列的时间指定音讯送至队列的时间 POINT pt;指定音讯发送时屏幕光标的位置,指定音讯发送时屏幕光标的位置, 数据类型数据类型POINT也是一个构造体也是一个构造体MSG;附加信息与详细附加信息与详细音讯号的值有关,音讯号的值有关,在在Win中音讯用中音讯用构造体构造体MSG表示表示typedef struct tagPOINT typedef struct tagPOINT LONG xLONG x; LONG y; LONG y; POINT; POINT; 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院
14、 Windows常用音讯窗口管理音讯窗口管理音讯初始化音讯初始化音讯输入音讯输入音讯系统音讯系统音讯剪贴板音讯剪贴板音讯控制处置音讯控制处置音讯控制通知音讯控制通知音讯滚动条通知音讯滚动条通知音讯非用户区音讯非用户区音讯MDI音讯音讯DDE音讯音讯运用程序自定义的音讯运用程序自定义的音讯 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 MFC-编程框架nMFC 中的各种类结合起来构成了一个运用程序框架,中的各种类结合起来构成了一个运用程序框架,用以让程序员建立用以让程序员建立Windows下的运用程序,相对下的运用程序,相对SDK来说更为简单的方法。来说更为简单的方法。n详细来说,
15、详细来说,MFC框架定义了运用程序的轮廓,并提供框架定义了运用程序的轮廓,并提供了用户接口的规范实现方法,程序员所要做的就是经了用户接口的规范实现方法,程序员所要做的就是经过预定义的接口把详细运用程序特有过预定义的接口把详细运用程序特有 的东西填入这个的东西填入这个轮廓。轮廓。nMicrosoft Visual C+提供了相应的工具来完成这个提供了相应的工具来完成这个任务:任务:AppWizard可以用来生成初步的框架文件代可以用来生成初步的框架文件代码和资源等;资源编辑器用于协助直观地设计用户码和资源等;资源编辑器用于协助直观地设计用户接口;接口; ClassWizard用来协助添加代码到框
16、架文件;用来协助添加代码到框架文件;最后,编译,那么经过类库实现了运用程序特定的逻最后,编译,那么经过类库实现了运用程序特定的逻辑辑 。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 封装封装 n构成构成MFC框架的是框架的是MFC类库,一种类库,一种C+类库,具有明类库,具有明显封装性质的类库:显封装性质的类库:n1对对Win32运用程序编程接口的封装:用一个运用程序编程接口的封装:用一个C+ Object来包装一个来包装一个Windows Object。n2对运用程序概念的封装:对运用程序概念的封装:MFC把把win32中许多中许多有含义的处置序列封装起来,替程序员完成这些任
17、务。有含义的处置序列封装起来,替程序员完成这些任务。另外,另外,MFC提出了以文档提出了以文档-视图为中心的编程方式,视图为中心的编程方式,MFC类库封装了对它的支持。类库封装了对它的支持。n3对对COM/OLE特性的封装:特性的封装:MFC的的OLE类封装了类封装了OLE API大量的复杂任务,这些类提供了实现大量的复杂任务,这些类提供了实现OLE的的更高级接口。更高级接口。n4对对ODBC功能的封装:以少量的能提供与功能的封装:以少量的能提供与ODBC之间更高级接口的之间更高级接口的C+类,封装了类,封装了ODBC API的大量的大量的复杂的任务,提供了一种数据库编程方式。的复杂的任务,提
18、供了一种数据库编程方式。n几个概念的解释几个概念的解释 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 承继承继 nMFC笼统出众多类的共同特性,设计出一些基类作为笼统出众多类的共同特性,设计出一些基类作为实现其他类的根底。其中,最重要的类是实现其他类的根底。其中,最重要的类是CObject和和CCmdTarget。nCObject是是MFC的根类,绝大多数的根类,绝大多数MFC类是其派生的,类是其派生的,包括包括CCmdTarget。CObject 实现了一些重要的特性,实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调包括动态类信息、动态创建、对象序列化、对程
19、序调试的支持,等等。一切从试的支持,等等。一切从CObject派生的类都将具备派生的类都将具备或者可以具备或者可以具备CObject所拥有的特性。所拥有的特性。nCCmdTarget经过封装一些属性和方法,提供了音讯经过封装一些属性和方法,提供了音讯处置的架构。处置的架构。MFC中,任何可以处置音讯的类都从中,任何可以处置音讯的类都从CCmdTarget派生。派生。n对每种性质不同的对象窗口、运用程序、文档等,对每种性质不同的对象窗口、运用程序、文档等,MFC都设计了一组类对这些对象进展封装,每一组类都设计了一组类对这些对象进展封装,每一组类都有一个基类,从基类派生出众多更详细的类。例如:都有
20、一个基类,从基类派生出众多更详细的类。例如:CWnd、CwinThread、Cdocument等。等。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 虚拟函数和动态约束 nMFC以以“C+为根底,必然支持虚拟函数和为根底,必然支持虚拟函数和动态约束。但为了防止导致虚拟函数表过于臃动态约束。但为了防止导致虚拟函数表过于臃肿耗费内存、效率低下,肿耗费内存、效率低下,MFC建立了音讯建立了音讯映射机制,以富有效率、便于运用的手段处理映射机制,以富有效率、便于运用的手段处理音讯处置函数的动态约束问题。音讯处置函数的动态约束问题。n经过虚拟函数和音讯映射,经过虚拟函数和音讯映射,MFC类提
21、供了丰富类提供了丰富的编程接口。程序员承继基类的同时,把本人的编程接口。程序员承继基类的同时,把本人实现的虚拟函数和音讯处置函数嵌入实现的虚拟函数和音讯处置函数嵌入MFC的编的编程框架。程框架。MFC编程框架将在适当的时候、适当编程框架将在适当的时候、适当的地方来调用程序的代码。的地方来调用程序的代码。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 MFC的宏观框架体系n如前所述,如前所述,MFC实现了对运用程序概念的封装,把类、实现了对运用程序概念的封装,把类、类的承继、动态约束、类的关系和相互作用等封装起类的承继、动态约束、类的关系和相互作用等封装起来。这样封装的结果对程序员
22、来说,是一套开发模板来。这样封装的结果对程序员来说,是一套开发模板或者说方式。或者说方式。n针对不同的运用和目的,程序员采用不同的模板。例针对不同的运用和目的,程序员采用不同的模板。例如,如,SDI运用程序的模板,运用程序的模板,MDI运用程序的模板,规运用程序的模板,规那么那么DLL运用程序的模板,扩展运用程序的模板,扩展DLL运用程序的模板,运用程序的模板,OLE/ACTIVEX运用程序的模板,等等。运用程序的模板,等等。n这些模板都采用了以文档这些模板都采用了以文档-视为中心的思想,每一个模视为中心的思想,每一个模板都包含一组特定的类。典型的板都包含一组特定的类。典型的MDI运用程序的构
23、成运用程序的构成将在下一节详细讨论。将在下一节详细讨论。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 了解MFC机理的作用n内部机制有助于写出功能灵敏而强大的程序。内部机制有助于写出功能灵敏而强大的程序。n为了实现音讯映射机制,为了实现音讯映射机制,MFC编程框架必需求编程框架必需求保证首先得到音讯,然后按既定的方法进展处保证首先得到音讯,然后按既定的方法进展处置。置。n为了实现对为了实现对DLL编程的支持和多线程编程的支编程的支持和多线程编程的支持,持,MFC内部运用了特别的处置方法,运用模内部运用了特别的处置方法,运用模块形状、线程形状等来管理一些重要信息。块形状、线程形状
24、等来管理一些重要信息。nMFC内部处置对程序员来说是透明的。内部处置对程序员来说是透明的。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 MFC特性总结nMFC封装了封装了Win32 API,OLE API,ODBC API等底等底层函数的功能,并提供更高一层的接口,简化了编程。层函数的功能,并提供更高一层的接口,简化了编程。同时,同时,MFC支持对底层支持对底层API的直接调用。的直接调用。nMFC提供了一个提供了一个Windows运用程序开发方式,对程运用程序开发方式,对程序的控制主要是由序的控制主要是由MFC框架完成,还覆盖大部分的功框架完成,还覆盖大部分的功能,例如,预定
25、义或实现了许多事件和音讯处置。框能,例如,预定义或实现了许多事件和音讯处置。框架或者由其本身处置事件,不依赖程序员的代码;或架或者由其本身处置事件,不依赖程序员的代码;或者调用程序员的代码来处置运用程序特定的事件。者调用程序员的代码来处置运用程序特定的事件。nMFC是是C+类库,程序员经过运用、承继和扩展适当类库,程序员经过运用、承继和扩展适当的类来实现特定的目的。例如,承继时,运用程序特的类来实现特定的目的。例如,承继时,运用程序特定的事件由程序员的派生类来处置,不感兴趣的由基定的事件由程序员的派生类来处置,不感兴趣的由基类处置。实现这种功能的根底是类处置。实现这种功能的根底是C+对承继的支
26、持,对承继的支持,对虚拟函数的支持,以及对虚拟函数的支持,以及MFC实现的音讯映射机制。实现的音讯映射机制。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 MFCMFC还很好地坚持了程序的向下兼容性还很好地坚持了程序的向下兼容性是用来编是用来编写写WindowsWindows运用程序运用程序的的C+C+类集类集以层次构造组织以层次构造组织封装了大部分封装了大部分APIAPI函数函数提供了图形环境下运用程序的框架提供了图形环境下运用程序的框架提供了创建运用程序的组件提供了创建运用程序的组件提供了大量的基类供程序员根据不同的运用环境进展扩展提供了大量的基类供程序员根据不同的运用环境进
27、展扩展允许在编程过程中自定义和扩展运用程序中的类允许在编程过程中自定义和扩展运用程序中的类较好的移植性,可移植于众多的平台较好的移植性,可移植于众多的平台MFCMFC 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 以下图是以下图是MFCMFC运用程序框架构造类的承继关系。运用程序框架构造类的承继关系。 CCmdTargetCWinThreadCWndCDocumentCDocTemplateCWinAppCViewCFrameWndCMDIChildWndCMDIFrameWndCSingleDocTemplateCMultiDocTemplateCObject MFC运用程序框
28、架构造类运用程序框架构造类 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 1.CObject1.CObject类类 CObject CObject是是MFCMFC类库的根类,它几乎描画了一切类库的根类,它几乎描画了一切MFCMFC类的一些类的一些公共特性,并且给一切由它派生出的类提供了公共特性,并且给一切由它派生出的类提供了3 3种重要特性种重要特性, ,即:串行化支持、运转时类信息支持以及诊断和调试支持。即:串行化支持、运转时类信息支持以及诊断和调试支持。 2.CCmdTarget2.CCmdTarget类类 命令类命令类CCmdTargetCCmdTarget是是CObjec
29、tCObject的子类,它是的子类,它是MFCMFC库中一切具库中一切具有音讯映射属性的类的公共基类。从有音讯映射属性的类的公共基类。从CCmdTargetCCmdTarget派生的类能派生的类能在程序运转时动态创建对象和处置命令音讯。在程序运转时动态创建对象和处置命令音讯。 3.CWinApp3.CWinApp类类 运用程序类运用程序类CWinAppCWinApp是是CWinThreadCWinThread的子类,封装了初始化、的子类,封装了初始化、运转、终止运用程序的代码。可以由此派生本人的运用类。运转、终止运用程序的代码。可以由此派生本人的运用类。 北北 京京 林林 业业 大大 学学 信
30、信 息息 学学 院院 4. CWnd4. CWnd类类 窗口类窗口类CWndCWnd提供了提供了MFCMFC中一切窗口类的根本功能。从中一切窗口类的根本功能。从CWndCWnd派生的类可以拥有本人的窗口,并对它进展控制。派生的类可以拥有本人的窗口,并对它进展控制。 5.CView5.CView类类 视图类视图类CViewCView是是CWndCWnd类的子类。视图类及其派生类用于管类的子类。视图类及其派生类用于管理框架窗口的客户区。理框架窗口的客户区。6.CDocument6.CDocument类类 文档类文档类CDocumentCDocument担任装载和维护文档。文档包括运用程担任装载和维
31、护文档。文档包括运用程序的任务成果或环境设置数据等,可以是程序需求保管的任序的任务成果或环境设置数据等,可以是程序需求保管的任何内容。何内容。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 7. CFrameWnd7. CFrameWnd类类 CFrameWnd CFrameWnd类是类是CWndCWnd类的派生类。它是一切其他框架窗口类的派生类。它是一切其他框架窗口类的基类,主要用来管理一个窗口,可以以为它取代了类的基类,主要用来管理一个窗口,可以以为它取代了SDKSDK运运用程序中窗口处置函数用程序中窗口处置函数WndProc( )WndProc( )的位置。的位置。CFra
32、meWndCFrameWnd类的对类的对象是一个框架窗口,包括边框、标题栏、菜单、最大化按钮、象是一个框架窗口,包括边框、标题栏、菜单、最大化按钮、最小化按钮和一个激活的视图。最小化按钮和一个激活的视图。CFrameWndCFrameWnd类支持单文档界面,类支持单文档界面,对于多文档界面,运用它的两个派生类对于多文档界面,运用它的两个派生类CMDIFrameWndCMDIFrameWnd和和CMDIChildWndCMDIChildWnd。CMDIFrameWndCMDIFrameWnd类用于类用于MDIMDI的主窗口,的主窗口,CMDIChildWndCMDIChildWnd类用于类用于M
33、DIMDI的子窗口。的子窗口。 CFrameWnd CFrameWnd类提供了假设干个成员函数,用于获得和设置类提供了假设干个成员函数,用于获得和设置活动文档、视图、图文框、标题栏、形状栏等操作。活动文档、视图、图文框、标题栏、形状栏等操作。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 音讯和事件n Windows是一个基于事件的音讯是一个基于事件的音讯(message)驱动系统,驱动系统,Windows运用程序是按照运用程序是按照“事件事件音讯音讯处置非顺序的机制运转的。处置非顺序的机制运转的。n 所谓音讯,就是用于描画某个事件发生的信所谓音讯,就是用于描画某个事件发生的信息
34、,而事件是对于息,而事件是对于Windows的某种操作,事的某种操作,事件和音讯亲密相关,事件是因,音讯是果,事件和音讯亲密相关,事件是因,音讯是果,事件产生音讯,音讯对应事件。件产生音讯,音讯对应事件。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 音讯的处置n所谓音讯的处置,其本质就是事件的处所谓音讯的处置,其本质就是事件的处置。当有某个事件置。当有某个事件(如单击鼠标、键盘输如单击鼠标、键盘输入和执行菜单命令等入和执行菜单命令等)发生时,发生时,Windows会根据详细的事件产生对应的会根据详细的事件产生对应的音讯,并发送到指定运用程序的音讯队音讯,并发送到指定运用程序的音
35、讯队列。运用程序从音讯队列中取出音讯,列。运用程序从音讯队列中取出音讯,并根据不同的音讯进展不同的处置。并根据不同的音讯进展不同的处置。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 事件驱动程序设计n事件驱动程序设计,不是由事件的顺序事件驱动程序设计,不是由事件的顺序来控制,而是由事件的发生来控制。来控制,而是由事件的发生来控制。n事件特点:发生是随机的、不确定的,事件特点:发生是随机的、不确定的,并没有预定的顺序,允许程序的的用户并没有预定的顺序,允许程序的的用户用各种合理的顺序来安排程序的流程。用各种合理的顺序来安排程序的流程。n擅长领域:对于需求用户交互的运用程擅长领域:
36、对于需求用户交互的运用程序来说,相比过程驱动方法无法替代的序来说,相比过程驱动方法无法替代的优点。优点。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 事件驱动过程 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 音讯驱动模型 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 过程过程1 1开场开场过程过程2 2.过程过程n n终了终了事件事件1事件事件2事件事件3.事件事件n 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 Windows音讯机制n事件驱动是靠音讯循环机制来实现的。事件驱动是靠音讯循环机制来实现的。n事件驱动围绕着音讯的产生与处
37、置展开。事件驱动围绕着音讯的产生与处置展开。n一条音讯是关于发生的事件的音讯。一条音讯是关于发生的事件的音讯。nWindows的音讯机制实现:的音讯机制实现:n系统中所发生的任何活动被当作事件来处置。系统中所发生的任何活动被当作事件来处置。n对于所发生的每一个事件,对于所发生的每一个事件,Windows将其转将其转换成音讯的方式放在一个称为音讯队列的内存换成音讯的方式放在一个称为音讯队列的内存区中。区中。nWindows的音讯发送程序担任选择适宜的对的音讯发送程序担任选择适宜的对象,将音讯队列中的音讯发送到欲接受音讯的象,将音讯队列中的音讯发送到欲接受音讯的对象上。对象上。 北北 京京 林林
38、业业 大大 学学 信信 息息 学学 院院 Windows音讯机制n运用程序经过执行一段称为音讯循环的代码来轮询运用程序的音讯队列,从中检索出该程序要处置的音讯,并立刻音讯发送到有关的对象上。n MSGmsg;nwhile (GetMessage(&msg, NULL, 0, 0L)nnTranslateMessage(&msg);nDispatchMessage(&msg);n 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 音讯类型n输入音讯:对键盘和鼠标输入作反响。这输入音讯:对键盘和鼠标输入作反响。这类输入音讯首先放在系统音讯队列中,然类输入音讯首先放
39、在系统音讯队列中,然后后Windows将它们送入运用程序的音讯将它们送入运用程序的音讯队列,使音讯得四处置。队列,使音讯得四处置。n控制音讯:用来与控制音讯:用来与Windows的特殊控制的特殊控制对象,例如,对话框、列表框、按钮等进对象,例如,对话框、列表框、按钮等进展双向通讯。这类音讯普通不经过运用程展双向通讯。这类音讯普通不经过运用程序的音讯队列,而是直接发送到控制对象序的音讯队列,而是直接发送到控制对象上。上。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 音讯类型n系统音讯:对程式化的事件或系统时钟中断作系统音讯:对程式化的事件或系统时钟中断作出反响。有些系统音讯例如,
40、程序间进展数出反响。有些系统音讯例如,程序间进展数据交换要经过据交换要经过Windows的系统音讯队列。的系统音讯队列。而有些系统音讯,例如窗口的创建及删除等音而有些系统音讯,例如窗口的创建及删除等音讯直接送入运用程序的音讯队列。讯直接送入运用程序的音讯队列。n用户音讯:通常由程序员创建的,音讯只从运用户音讯:通常由程序员创建的,音讯只从运用程序的某一部分进入到该运用程序的另一部用程序的某一部分进入到该运用程序的另一部分而被处置,不会分开运用程序。用户音讯经分而被处置,不会分开运用程序。用户音讯经常用来处置选单操作:一个用户音讯与选单中常用来处置选单操作:一个用户音讯与选单中的一选项相对应,当
41、它在运用程序队列中出现的一选项相对应,当它在运用程序队列中出现时被处置。时被处置。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 1 1规范规范WindowsWindows音讯音讯 (1) (1)键盘音讯键盘音讯: :与键盘某个键的动作相关联。常见的键盘音与键盘某个键的动作相关联。常见的键盘音讯有讯有WM_KEYDOWNWM_KEYDOWN、WM_KEYUPWM_KEYUP:非系统键的按下和释放。:非系统键的按下和释放。WM_CHARWM_CHAR:输入非系统字符时产生的音讯。:输入非系统字符时产生的音讯。音讯的类别及其描画 (2) (2)鼠标音讯鼠标音讯: :涉及鼠标的单击、双
42、击、拖动等。例如,涉及鼠标的单击、双击、拖动等。例如,WM_MOUSEMOVEWM_MOUSEMOVE、WM_RBUTTONDOWNWM_RBUTTONDOWN、WM_LBUTTONDOWNWM_LBUTTONDOWN、WM_LBUTTONDBLCLICKWM_LBUTTONDBLCLICK:鼠标挪动时、右左键按下时、双击:鼠标挪动时、右左键按下时、双击时产生的音讯。时产生的音讯。 (3) (3)窗口音讯窗口音讯: :窗口音讯普通与创建窗口、绘制窗口、挪窗口音讯普通与创建窗口、绘制窗口、挪动窗口和销毁窗口等动作有关。在动窗口和销毁窗口等动作有关。在MFCMFC运用程序中,窗口运用程序中,窗口音
43、讯是由视图类、窗口类及它们的派生类处置的。音讯是由视图类、窗口类及它们的派生类处置的。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 2. 2.控件音讯控件音讯 控件音讯是指控件或其他子窗口向父窗口发送的控件音讯是指控件或其他子窗口向父窗口发送的WM_COMMANDWM_COMMAND音讯。发送控件音讯的控件运用独一的音讯。发送控件音讯的控件运用独一的IDID号来识号来识别,运用控件类来支配。从控件传给系统的音讯,它的前缀别,运用控件类来支配。从控件传给系统的音讯,它的前缀的最后一个字符为的最后一个字符为N N;由系统发送给控件的音讯,其前缀的最;由系统发送给控件的音讯,其前缀的
44、最后一个字符为后一个字符为M M。 3. 3.命令音讯命令音讯 命令音讯是由菜单项、工具栏按钮、快捷键等用户界面命令音讯是由菜单项、工具栏按钮、快捷键等用户界面对象发出的对象发出的WM_COMMANDWM_COMMAND音讯。命令音讯与其他音讯不同,它音讯。命令音讯与其他音讯不同,它可被更广泛的对象如文档、文档模板、运用程序对象、窗口可被更广泛的对象如文档、文档模板、运用程序对象、窗口和视图等处置。和视图等处置。 北北 京京 林林 业业 大大 学学 信信 息息 学学 院院 MFC MFC采用音讯映射来处置音讯。这种音讯映射机制包括一采用音讯映射来处置音讯。这种音讯映射机制包括一组音讯映射宏,用
45、于把一个组音讯映射宏,用于把一个WindowsWindows音讯和其音讯处置函数音讯和其音讯处置函数联络起来。联络起来。MFCMFC运用程序框架提供了音讯映射功能,一切从运用程序框架提供了音讯映射功能,一切从CCmdTargetCCmdTarget类派生出来的类都可以拥有本人的音讯映射。类派生出来的类都可以拥有本人的音讯映射。 与与 M F CM F C 音 讯 映 射 机 制 有 关 的 宏 有 以 下音 讯 映 射 机 制 有 关 的 宏 有 以 下 3 3 个 :个 :DECLARE_MESSAGE_MAP( )DECLARE_MESSAGE_MAP( )宏、宏、BEGIN_MESSAGE_MAP(MyClass, BEGIN_MESSAGE_MAP(MyClass, MybaseClass)MybaseClass)宏和宏和END_MESSAGE_MAP( )END_MESSAGE_MAP( )宏。宏。MFC音讯映射机制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全球化的服务业转型趋势
- 2025房屋买卖合同有何注意事项
- 智能物流产业园项目可行性研究报告
- 中国反式阿魏酸项目经营分析报告
- 2025年美术教师招聘考试专业知识试卷及答案
- 2025年实验室安全试题及答案
- 中山合成树脂项目可行性研究报告模板
- 2024社工初级社会工作实务初级考试题库含答案
- 2024年大学生人文知识竞赛题库及答案
- 2025年海南省铁路机车车辆驾驶人员资格考试(行车安全规章)复习题及答案
- 手工飞机制作课件
- 国际道路应急预案
- 【初中语文】第9课《天上有颗南仁东星》课件-2025-2026学年统编版语文八年级上册
- 生死疲劳阅读报告课件
- 设计服务合同标准范本参考
- 2025年贵州高考生物试卷真题及答案详解(精校打印版)
- 第10课《牛郎织女(一)》 课件 2025-2026学年五年级语文上册 统编版
- 湖南省九校联盟2026届高三上学期9月第一次联考物理试题(含答案)
- 夜班护士安全培训内容课件
- 新版中华民族共同体概论课件第九讲混一南北与中华民族大统合 (元朝时期)-2025年版
- 健康安全紧急培训内容课件
评论
0/150
提交评论