- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
下载
第5章 理解Wi n d o w s消息
本章内容:
• 什么是消息
• 消息的类型
• Wi n d o w s 的消息系统是如何工作的
• Delphi 的消息系统
• 消息处理
• 发送自己的消息
• 非标准的消息
• 一个消息系统的剖析:V C L
• 消息与事件之间的关系
尽管V C L组件可以通过Object Pascal事件来响应Wi n 3 2消息,但是,作为一个Wi n 3 2程序员,理解
Wi n d o w s 的消息系统还是非常必要的。
作为一个D e l p h i应用程序开发者,你将发现,在大部分情况下使用 V C L 的事件就已经足够了,只
有少数情况才需要深入到 Wi n 3 2消息处理的世界。然而,作为一个 D e l p h i组件开发者,你将和消息成
为好朋友,因为你不得不直接处理许多Wi n d o w s消息。
5.1 什么是消息
消息,就是指Wi n d o w s发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变
窗口尺寸、按下键盘上的一个键都会使Wi n d o w s发送一个消息给应用程序。
消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,
对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做 T M s g ,它
在Wi n d o w s单元中是这样声明的:
t y p e
TMsg = packed record
hwnd: HWND; / /窗口句柄
message: UINT; / /消息常量标识符
wParam: WPA R A M ; // 32位消息的特定附加信息
lParam: LPA R A M ; // 32位消息的特定附加信息
time: DWORD; / /消息创建时的时间
pt: TPoint; / /消息创建时的鼠标位置
e n d ;
消息中有什么?
是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:
hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可
视对象的句柄(窗口、对话框、按钮、编辑框等) 。
message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也
第5章 理解Wi n d o w s消息 1 1 5
下载
可以是自定义的常量。
wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。
lParam 通常是一个指向内存中数据的指针。由于W P a r a m 、l P a r a m和P o i n t e r都是3 2位的,
因此,它们之间可以相互转换。
现在你已对消息的组成有了一定了解,下面来看看各种类型的消息。
5.2 消息的类型
Wi n 3 2 中预定义了一些消息常量。消息常量由 T M s g 记录的 m e s s a g e 域来传递。这些常量是在
M e s s a g e s单元中定义的。消息常量往往以字母 W M 打头,代表Windows Message 。表5 - l列出了一些常
用的Wi n d o w s消息以及它们的含义和值。
表5-1 常用的Wi n d o w s消息
消息标识符 值 含 义
W M _ A C T I VAT E $ 0 0 0 6 窗口被激活或被取消激活
W M _ C H A R $ 0 1 0 2 按下某个键,并且已经发送了 W M _ K E Y D O W N和W M _
文档评论(0)