クラス(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
。私の質問は:なぜこれが起こっているのですか?
私の最良の推測は、ディレクティブがあるにもかかわらず、 a と同等のものをAllocateHWND
作成したことです。私が見逃しているこれを実装する正しい方法はありますか?HandleMyMessage
DefWndProc
message