2

WM_NOTIFY メッセージは、インプレースの「ツール ヒント」(メッセージ バルーン) やその他のコントロール通知によく使用されますが、TFrame にコントロールを配置すると、これらのコントロールに対して WM_NOTIFY メッセージは発生しません。これらのメッセージがフォームに送信されなくなったのはなぜですか?どうすればよいですか?

4

1 に答える 1

7

WM_NOTIFYコントロールの親ウィンドウに送信されます。つまりTFrame、自身の親TForm(または別の親)ではなく、が直接の子コントロールのメッセージを受信します。

WM_NOTIFY直接取り扱ってはいけません。WindowProc新しいハンドラーを割り当てるなどして、子コントロール自体をサブクラス化し、CN_NOTIFY代わりにメッセージを処理します。VCLは元のメッセージを受信し、それが属する特定のコントロールにメッセージWM_NOTIFYとして自動的に転送します。CN_NOTIFY

WM_COMMAND同じことが(として転送されるCN_COMMAND)および他の多くの転送されるシステムメッセージにも当てはまります。CN_...Controls.pasユニットは、転送されたシステムメッセージに対して定義されている使用可能なすべてのメッセージを定義します。

于 2011-12-14T21:36:50.300 に答える