delphi – 我的表单从未收到过发布的自定义消息
发布时间:2020-12-15 09:34:56 所属栏目:大数据 来源:网络整理
导读:我正在使用PostMessage将来自其他单元的消息发送到主表单,如下所示: procedure notify(var Message: TMessage); message 1; 在程序中,根据WParam显示信息: procedure TForm1.notify(var Message: TMessage);begin Case (Message.WParam) of 1: memo1.Lines
我正在使用PostMessage将来自其他单元的消息发送到主表单,如下所示:
procedure notify(var Message: TMessage); message 1; 在程序中,根据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; 在另一个单元中,我发送这样的消息: PostMessage(Handle,1,2,variable_info); 首先,什么是消息ID?我将它替换为1,因为它的类型是基数,我应该使用什么呢?并且我的消息永远不会收到,因为Message.WParam永远不会等于1或2.我的代码有什么问题? 我编辑了这样的代码:unit1 const WM_MY_MESSAGE = WM_USER + 0; 在代码中我添加了这样的东西: PostMessage(Handle,WM_MY_MESSAGE,value_sent); TFormUnit: 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,value_sent)时;执行我应该收到消息 解决方法
message ID必须是独一无二的.要在应用程序中发送消息,请使用常量WM_USER(在消息单元中声明)作为第一个有效起始编号.
低于WM_USER($0400)的值保留给系统定义的消息.
在表单的界面部分或在包含应用程序中所有其他消息的单元中声明. const WM_MY_MESSAGE = WM_USER + 0; 编辑: 除了问题之外,要在PostMessage调用中获取表单窗口句柄, PostMessage(YourForm.Handle,value_sent); 要么 PostMessage(FindWindow(nil,'YourFormName'),value_sent); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |