スレッドを大量に使用するサードパーティライブラリを使用しています。メインフォームを使用せずにスレッドからオブジェクトに直接メッセージを送信
スレッドからメインスレッドに返信するメッセージを使用し始めました。すべて動作していますが、SendMessageを使用すると、以下のように記述するのが面倒です。メインフォームがすべてのメッセージを送出しなければならないためです。メインフォームに依存せずにフレームまたはオブジェクトに直接メッセージを送信する方法はありますか?プログラム起動時に
:
MyMessageNumber1 := RegisterWindowMessage('MyUniqueID1');
MyMessageNumber2 := RegisterWindowMessage('MyUniqueID2');
任意のデータなしでメッセージを送信し、私が行います。要するに
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;
:
SendMessage(Application.MainForm.Handle, MyMessageNumber1)
私のメインフォームには、これを持っています上記のWndProcは、私がすべてのメッセージとそれらを誰にディスパッチするかについて、私が好むよりはるかに多くを知る必要があります。
どのようにオブジェクトを受け取ることができる方法でスレッドから直接メッセージを送信できますか?
これらのメッセージにはすべて、関連付けられたデータがありません。 (私たちは、いくつかの他の日それを買ってあげる!):-)
TIA
私は、WndProcがメッセージについてあまり知っていることができないという概念を受け入れるのは難しいと感じています。メッセージの処理はWndProcの**仕事**です。 –
#Rob Kennedy - WndProcがメインフォーム(必要と思われるので、この質問)であれば、メインフォームは低レベルコードの詳細についてすべて知っていなければならないので、メッセージを送信できます。メイソンが指摘しているように、低レベルのコードがメッセージを明示的にキャッチできるときに、メインフォームがいくつかの低レベルコードの内部の詳細を知る必要があるのはなぜですか? – RobertFrank