我正在使用使用大量线程的第三方库。直接从一个线程发送消息到一个对象而不使用主窗体
我刚开始使用消息从线程回传给主线程。这一切都工作,但使用SendMessage我下面描述的方式似乎很繁琐,因为主窗体必须调度所有消息。有没有办法直接发送消息到框架或对象,而不依赖于主窗体?
程序启动时:
MyMessageNumber1 := RegisterWindowMessage('MyUniqueID1');
MyMessageNumber2 := RegisterWindowMessage('MyUniqueID2');
发送邮件时没有任何数据,我做的:
SendMessage(Application.MainForm.Handle, MyMessageNumber1)
我的主要形式有这样的:
procedure WndProc(var Message: TMessage); override;
if (Message.Msg = MyMessageNumber1)
... call a frame or other object's method that handles this particular message
else if (Message.Msg = MyMessageNumber2) then
... call another ....
else
inherited;
在总结:以上WndProc必须知道的远远超过我想要的所有消息以及将它们发送给谁。
如何直接从线程发送消息,以便任何对象都可以接收消息?
所有这些消息都没有与它们关联的数据。 (我们会得到一些其他的一天!):-)
TIA
我发现很难接受WndProc能够知道太多消息的想法。处理消息是WndProc的**作业**。 – 2010-11-30 01:24:47
#Rob Kennedy - 但是如果WndProc是主要的形式(因为我认为是必要的,因此这个问题),那么主表单就必须知道低级代码的各种细节,以便它可以发送消息给它们。为什么主表单需要知道一些低级代码的内部细节,正如梅森指出的那样,低级代码可以明确地捕获这些信息? – RobertFrank 2010-11-30 23:31:45