有了一个类(TObject),我有:
private
FHwnd : HWND;
procedure HandleMyMessage(var Message : TMessage); message TH_MYMESSAGE;
在哪里TH_MYMESSAGE = WM_USER + 1
在类构造函数中:
FHwnd := AllocateHWND(HandleMyMessage);
唯一接收到引用的对象FHwnd
是私有自定义 TThread(在此类中创建),它发布的唯一消息是TH_MYMESSAGE
. 我的理解是message
过程声明中的指令将其处理限制为仅TH_MYMESSAGE
.
这在测试中运行良好,但在集成到更大的应用程序后,我收到的反馈HandleMyMessage
也会触发其他消息(具有明显的不良结果)。
if Message.Msg <> TH_MYMESSAGE then Exit;
这很容易通过添加来纠正HandleMyMessage
。我的问题是:为什么会这样?
我最好的猜测是,尽管它有指令,但它AllocateHWND
已经HandleMyMessage
相当于 a 。有没有正确的方法来实现我所缺少的?DefWndProc
message