Delphi 我的表单从未收到已发布的自定义邮件

Delphi 我的表单从未收到已发布的自定义邮件,delphi,postmessage,Delphi,Postmessage,我使用PostMessage从另一个单元向主窗体发送消息,如下所示: procedure notify(var Message: TMessage); message 1; PostMessage(Handle, 1, 2, variable_info); PostMessage(Handle,WM_MY_MESSAGE, 1,value_sent); 在此过程中,信息根据WParam显示: procedure TForm1.notify(var Message: TMessage);

我使用
PostMessage
从另一个单元向主窗体发送消息,如下所示:

procedure notify(var Message: TMessage); message 1;
PostMessage(Handle, 1, 2, variable_info);
 PostMessage(Handle,WM_MY_MESSAGE, 1,value_sent);
在此过程中,信息根据
WParam
显示:

procedure TForm1.notify(var Message: TMessage);
begin
  Case (Message.WParam) of
    1: memo1.Lines.Add('task started');
    2: memo1.Lines.Add('in progress');
  end;
end;
在另一个单元中,我发送如下消息:

procedure notify(var Message: TMessage); message 1;
PostMessage(Handle, 1, 2, variable_info);
 PostMessage(Handle,WM_MY_MESSAGE, 1,value_sent);
首先,什么是消息ID?我用1代替它,因为它的类型是基数,我应该用什么来代替呢?而且我的消息从未收到,因为
Message.WParam
永远不等于1或2。我的代码有什么问题


我像这样编辑代码:unit1

 const
 WM_MY_MESSAGE = WM_USER + 0;
在代码中,我添加了如下内容:

procedure notify(var Message: TMessage); message 1;
PostMessage(Handle, 1, 2, variable_info);
 PostMessage(Handle,WM_MY_MESSAGE, 1,value_sent);
特弗穆尼特:

  private
  procedure notify(var Message :TMessage); message WM_MY_MESSAGE;

  procedure TFormMain.notify(var Message: TMessage);
  begin
  Case (Message.WParam)of // which is 1
   1:
  //------------------------------------------
  begin
   memo1.Lines.Add('task started');
正常情况下,当PostMessage(Handle,WM_MY_MESSAGE,1,value_sent)时;如果被执行,我应该得到消息 任务开始了,但还是同一个错误,什么也没发生

必须是唯一的。要在应用程序内发送消息,请使用常量
WM_USER
(在
消息
单元中声明)作为第一个有效的起始编号

WM_USER
(0400美元)以下的值是为系统定义的消息保留的。 从文件:

应用程序无法将这些值用于私人消息

在表单的接口部分或在应用程序中与所有其他消息一起的单元中声明

const 
  WM_MY_MESSAGE = WM_USER + 0;
编辑:

除此之外,要在PostMessage调用中获取窗体窗口句柄

PostMessage(YourForm.Handle,WM_MY_MESSAGE,1,value_sent);


这就是WM_CREATE。不允许以异步方式发送。系统知道这一点。另请参见: