const SX_MYMESSAGE=WM_USER+100;//自定义一个消息常量
type
  TForm1 = class(TForm)
    Button1: TButton;
    
    procedure Button1Click(Sender: TObject);  private
    //消息名对应的函数名不能是一样一样的。
    procedure SXMyMessage(var Msg:TMessage);message SX_MYMESSAGE;
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
begin
  sendmessage(handle,SX_MYMESSAGE,0,0);
end;//消息名对应的函数名不能是一样一样的。
procedure TForm1.SXMyMessage(var Msg:TMessage);begin
    showmessage('yes .....');//这无所谓。
    //messageDlg('消息已收到,正在处理!',mtInfomation,[mbok],0);我以前也遇到过同样的问题希望对你有帮助

解决方案 »

  1.   

    //给 mtxxm1226 补充一点 在消息中加入参数传递
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;
    const SX_MYMESSAGE=WM_USER+100;//自定义一个消息常量
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      procedure SX_MYMESSAGE_Proc(var msg:TMessage);Message WM_USER+100;//自定义一个消息常量
      end;var
      Form1: TForm1;implementation{$R *.DFM} procedure TForm1.SX_MYMESSAGE_Proc(var msg:TMessage);
      var p:Pchar;
      begin
       p:=pointer(msg.Lparam);
       showMessage(p);
      end;procedure TForm1.Button1Click(Sender: TObject);
     var str:String; addr:longint;
    begin
      str:='SX_MYMESSAGE_Proc Test OK';
      addr:=longint(@str[1]);
      sendMessage(handle,SX_MYMESSAGE,0,addr);
    end;end.