如何将Windows消息发送到非主窗体

时间:2010-05-19 13:14:14

标签: delphi delphi-7

如何将Windows消息发送到我的应用程序中不是MainForm的表单?使用下面的代码给我一个访问冲突。

procedure TMainForm.SendMessageToAnotherForm;
begin
  SendMessage(MyForm.Handle,WM_MY_MESSAGE,0,0);
end;

MyForm已经创建,是最顶层的窗口。

编辑:我也尝试了PostMessage但我收到了相同的访问冲突,我很肯定WM_MY_MESSAGE是有效的,因为我用它来与其他地方的MainForm进行通信。

2 个答案:

答案 0 :(得分:8)

使用上述代码获取访问冲突的最可能原因是MyForm = nil或野指针。使用SendMessage调用在代码行上设置断点并检查它。如果MyForm是有效的引用,则MyForm中的消息处理会导致访问冲突。

答案 1 :(得分:2)

您是否知道SendMessage等待消息处理完毕?这意味着目标窗口的消息队列必须能够处理消息。

如果您在事件处理程序(如ButtonClick)中调用此方法,则最好使用PostMessage