`

Delphi自定义的消息的使用

阅读更多

 

阅:已验证,可通过;

摘自: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.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics