【精品】Delphi中消息机制的使用

【精品】Delphi中消息机制的使用

ID:42170008

大小:98.00 KB

页数:13页

时间:2019-09-09

【精品】Delphi中消息机制的使用_第1页
【精品】Delphi中消息机制的使用_第2页
【精品】Delphi中消息机制的使用_第3页
【精品】Delphi中消息机制的使用_第4页
【精品】Delphi中消息机制的使用_第5页
资源描述:

《【精品】Delphi中消息机制的使用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Delphi消息处理机制Delphi中的消息消息是Windows发出的一个通知,它告诉应川程序某个爭件发生了。在Delphi屮,人多数情况下Windows的消息被封装在VCL的事件屮,我们只需处理相应的VCL事件就可以了,但如果我们需要编写0C的控件、截获或过滤消息就必须深入研究Win32的消息处理机制。在Delphi中消息以TMessage记录的方式定义。打开Message.pas文件,我们口J以看到Tmessage是这样定义的:typeTMessage=packedrecordMsg:Cardinal;caseIntegerof0:(W

2、Param:Longint;LParam:Longint;Result:Longint);1:(WParamLo:Word;WParamHi:Word;LParamLo:Word;LParamHi:Word;ResultLo:Word;ResultHi:Word);end;其中,Msg是区别于其他消息的常量值,这些常量值可以是Windows单元中预定义的常量,也可以是川户自己定义的常量。Wparam通常是一个与消息有关的常量值,也可以是窗口或控件的句柄。LParam通常是一个指向内存中数据的指针。Result是消息处理的返回值。Wparam

3、>Lparam和Result都是32位的,如果想访问其屮的低16位或岛T6位可以分别使川WparamLo、WparamHiLParamLo>LparamHiResultLo和ResultHio在Delphi中除了通用的Tmessage外,还为每个Windows定义了一•个特殊的消息记录。我们可以浏览Message.pas文件,下面是键盘的消息记录:TWMKey=packedrecordMsg:Cardinal;CharCode:Word;Unused:Word;KeyData:Longint;Result:Longint;与键盘相关的消息如

4、:WM_KE丫DOWN、WM_KE丫UP、WM_CHAR、WM_SYSKEYDOWNWM_SYSKEYUP、WM_SYSCHAR的记录也被定义为TWMkey。在Message.pas文件中有以下声明:TWMChar=TWMkey;TWMKeyDown=TWMkey;TWMKeyUp=TWMkey;TWMSys-KeyDown=TWMkey;TWMSysKeyUp=TWMkey;TWMSysChar=TWMkey;消息的发送消息处理就是定义应用程序如何响应Windows的消息。在Delphi中每一个消息都有自C的处理过程,它必须是一个对象中的

5、方法,且只能传递一个Tmessage或其他特殊的消息记录,方法声明后要有一个message命令,后接一个在0到32767Z间的常量。前血我们提到的消息都是标准的Windows消息(WM_X),除此Z外述有VCL内部消息、通知消息和用户自定义消息。VCL内部消息通常以“CM_”开头,用于管理VCL内部的事物。如果改变了某个属性值或组件的其他一些特性后,需要通过内部消息将该变化通知其他组件。例如,激活输入焦点消息是向被激活的或被停用的组件发送的,用于接受或放弃输入焦点。另外还有通知消息,一个窗口内的子控件发主了一些事情,需要通知父窗口,这是通过

6、通知消息实现的。它只适用于标准的窗口控件,如按钮、列表檢、编辑框等等。打开Message.pas文件,在标准的Windows后就是通知消息的声明:const{$EXTERNALSYMBN_CLICKED}BN_CLICKED=0;{$EXTERNALSYMBN_PAINT}BN_PAINT=1;{$EXTERNALSYMBN_HILITE}BNHILITE=2;以上是按钮的通知消息,分别表示用户单击了按钮、按钮应当重画、用户加亮了按钮。用户也对以口己定义消息、给口己发送消息和编写消息处理过程。消息的常量值为WM.USER+100到FFF,这

7、个范围是Windows为川户自定义消息保留的。Delphi消息的发送有三种方法:1.Tcontrol类的Perform对彖方法。可以向任何一个窗体或控件发送消息,只需要知道窗体或控件的实例。其声明如F:functionTcontrol.Perform(Msg:Cardinal;Wparam,Lparam:Longint):Longint2.Windows的API函数SendMessage()和Postmessage()。其声明如下:functionSendMessage(hWnd:HWND;Msg:UINT;wParam:WPARAM;IP

8、aram:LPARAM):LRESULT;stdcall;functionPostMessage(hWnd:HWND;Msg:UINT:wParam:WPARAM;IParam:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。