初涉Delphi下Windows消息机制——同一程序内自定义消息实例
2010-02-05 09:24
441 查看
消息区别于调用的优势:消息可以让你不需要知道接收者的确切类型。同时,消息可以有选择地处理。如果接收者对消息没有做任何处理,不会造成任何后果。最后,消息可以广播给多个接收者,而要同时调用几个过程则比较困难。
下面是一个在同一应用程序内自定义消息的实例:
创建一个窗口FORM1,拖一个按钮控件,btn1。双击btn1,创建btn1的点击事件。代码如下(省略头部代码):
运行该程序,点击button,就会运行SendMessage发送MY_MESSAGE这样一个自定义消息过去。Mymessage接受到该消息就会产生beep声响。
向指定窗口句柄发送消息的函数有3个,也就是sendMessage可以用其他两个代替:
Form1.perform(MY_MESSAGE,0,0);
PostMessage(Form1.Handle,MY_MESSAGE,0,0);
Perform和SendMessage是要等消息处理结束后才返回,而PostMessage则是把消息送到消息队列之后,立即返回,管你什么时候处理。
在这个程序中。我们定义消息常量MY_MESSAGE=WM_USER+100;因为系统约定WM_USER+100到$7FFF之间是留给用户自定义的消息常量值。
procedure mymessage(var mymsg:TMessage);message MY_MESSAGE;
这次传递的是TMessage类型。而message标识符后面则是自定义消息常量。
SendMessage(Form1.Handle,MY_MESSAGE,0,0);
这是发送消息函数,参数类型分别为HWND,UINT,WPARAM,LPARAM,分别对应TMsg前4个成员。返回值为LRESULT,对应消息处理结果。
下面是一个在同一应用程序内自定义消息的实例:
创建一个窗口FORM1,拖一个按钮控件,btn1。双击btn1,创建btn1的点击事件。代码如下(省略头部代码):
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; //自定义消息常量 const MY_MESSAGE=WM_USER+100; type TForm1 = class(TForm) btn1: TButton; procedure btn1Click(Sender: TObject); private { Private declarations } //消息处理函数 procedure mymessage(var mymsg:TMessage);message MY_MESSAGE; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} //消息处理 procedure Tform1.mymessage(var mymsg:TMessage); begin beep; inherited; end; procedure TForm1.btn1Click(Sender: TObject); begin //发送消息 SendMessage(Form1.Handle,MY_MESSAGE,0,0); end; end.
运行该程序,点击button,就会运行SendMessage发送MY_MESSAGE这样一个自定义消息过去。Mymessage接受到该消息就会产生beep声响。
向指定窗口句柄发送消息的函数有3个,也就是sendMessage可以用其他两个代替:
Form1.perform(MY_MESSAGE,0,0);
PostMessage(Form1.Handle,MY_MESSAGE,0,0);
Perform和SendMessage是要等消息处理结束后才返回,而PostMessage则是把消息送到消息队列之后,立即返回,管你什么时候处理。
在这个程序中。我们定义消息常量MY_MESSAGE=WM_USER+100;因为系统约定WM_USER+100到$7FFF之间是留给用户自定义的消息常量值。
procedure mymessage(var mymsg:TMessage);message MY_MESSAGE;
这次传递的是TMessage类型。而message标识符后面则是自定义消息常量。
SendMessage(Form1.Handle,MY_MESSAGE,0,0);
这是发送消息函数,参数类型分别为HWND,UINT,WPARAM,LPARAM,分别对应TMsg前4个成员。返回值为LRESULT,对应消息处理结果。
相关文章推荐
- 初涉Delphi下Windows消息机制——程序间自定义消息实例
- 初涉Delphi下Windows消息机制——系统预定义消息实例
- [转载] DELPHI下的WINDOWS消息传递机制
- windows程序消息机制(Winform界面更新有关)
- windows下32位汇编语言学习笔记 第四章 第一个窗口程序 (windows的消息机制)
- winform自定义组件开发之windows消息机制
- 理解windows消息机制-delphi消息机制学习笔记。
- delphi 判断程序是否运行、自定义消息显示程序运行界面
- Qt事件机制浅析(定义,产生,异步事件循环,转发,与信号的区别。感觉QT事件与Delphi的事件一致,而信号则与Windows消息一致)
- 初涉Delphi下Windows消息机制——概念
- 深入Delphi -- Windows 消息机制
- Windows消息机制的应用【Delphi版】
- windows程序消息机制(Winform界面更新有关)
- Windows程序内部运行机制实例详解
- 深入Delphi -- Windows 消息机制
- windows消息机制与实例
- DELPHI下的WINDOWS消息传递机制
- 【C#】Windows程序消息机制
- windows程序消息机制(Winform界面更新有关)