阅:已验证,可通过;
摘自:http://blog.163.com/charls-007/blog/static/3545620820094309115530/
自定义的消息必须由用户向窗口发送。Windows 提供了两种不同的方法向窗口发送Windows 消息:
PostMessage 函数和SendMessage 函数。这里通过例子来说明如何使用自定义消息。使用自定义消息前,
首先要定义一个消息标识符常量,为了避免和系统中已有消息标识符冲突,可在WM_USER 消息标识
符的基础上添加一个常量来赋给要定义的消息标识符。然后可在单元文件中定义消息响应过程和消息
标识符常量。消息响应过程使用消息类TMessage 的变量为参数,随后应定义一个消息标识符变量,
变量名必须为Message。
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::以下为整个unit文件代码::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
//定义一个WM_MYMESSAGE 消息
WM_MYMESSAGE=WM_USER+5;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Procedure WMUser(var msg:TMessage);Message WM_MYMESSAGE;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//编写响应自定义消息的代码
procedure TForm1.WMUser(var msg:TMessage);
begin
ShowMessage('自定义消息。。。');
end;
{当自定义消息的工作完成后,可用PostMessage 函数或SendMessage 函数来发送自定义的Windows
消息,当然首先要获取目标窗口的句柄。例如,如果窗体(类名为TForm1,Caption 属性为“使用自
定义的Windows 消息”)有一个“消息”按钮(名为Button1),当单击“消息”按钮时要触发自定义
的Windows 消息WM_MYMESSAGE,可以为按钮的OnClick 事件编写代码如下:}
procedure TForm1.Button1Click(Sender: TObject);
var
HWnd:THandle;
begin
HWnd:=FindWindow('TForm1','使用自定义的windows消息');
if HWnd<>0 then
PostMessage(HWnd,WM_MYMESSAGE,0,0);
end;
end;
end.