示例一
自定义的消息必须由用户向窗口发送。Windows 提供了两种不同的方法向窗口发送Windows 消息:
PostMessage 函数和SendMessage 函数。这里通过例子来说明如何使用自定义消息。使用自定义消息前,
首先要定义一个消息标识符常量,为了避免和系统中已有消息标识符冲突,可在WM_USER 消息标识
符的基础上添加一个常量来赋给要定义的消息标识符。然后可在单元文件中定义消息响应过程和消息
标识符常量。消息响应过程使用消息类TMessage 的变量为参数,随后应定义一个消息标识符变量,
变量名必须为Message。
View Code
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzButton;
const
//定义一个WM_MYMESSAGE 消息 ,
//为了避免和系统中已有消息标识符冲突,可在WM_USER 消息标识
//符的基础上添加一个常量来赋给要定义的消息标识符
WM_MYMESSAGE=WM_USER +5;
type
TMessageFrm = class(TForm)
btn1: TRzButton;
procedure btn1Click(Sender: TObject);
procedure WMUser(var msg:TMessage);message WM_MYMESSAGE;
private
{ Private declarations }
public
{ Public declarations }
end;
var
MessageFrm: TMessageFrm;
implementation
{$R *.dfm}
procedure TMessageFrm.btn1Click(Sender: TObject);
var
HWnd:THandle;
begin
HWnd:=FindWindow('TMessageFrm','MessageFrm');
if HWnd<>0 then
PostMessage(HWnd,WM_MYMESSAGE,0,0);
end;
//编写响应自定义消息的代码
procedure TMessageFrm.WMUser(var msg: TMessage);
begin
ShowMessage('我的消息');
end;
end.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzButton;
const
//定义一个WM_MYMESSAGE 消息 ,
//为了避免和系统中已有消息标识符冲突,可在WM_USER 消息标识
//符的基础上添加一个常量来赋给要定义的消息标识符
WM_MYMESSAGE=WM_USER +5;
type
TMessageFrm = class(TForm)
btn1: TRzButton;
procedure btn1Click(Sender: TObject);
procedure WMUser(var msg:TMessage);message WM_MYMESSAGE;
private
{ Private declarations }
public
{ Public declarations }
end;
var
MessageFrm: TMessageFrm;
implementation
{$R *.dfm}
procedure TMessageFrm.btn1Click(Sender: TObject);
var
HWnd:THandle;
begin
HWnd:=FindWindow('TMessageFrm','MessageFrm');
if HWnd<>0 then
PostMessage(HWnd,WM_MYMESSAGE,0,0);
end;
//编写响应自定义消息的代码
procedure TMessageFrm.WMUser(var msg: TMessage);
begin
ShowMessage('我的消息');
end;
end.