我正在使用使用大量線程的第三方庫。直接從一個線程發送消息到一個對象而不使用主窗體
我剛開始使用消息從線程回傳給主線程。這一切都工作,但使用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