0
CDialogBarからサブクラス化されたコントロールがあり、ツールバーのようなボタンがいくつかあります。 CDialogBarクラスでWM_LBUTTONDOWNを捕捉すると、コントロール上にあるボタンの1つがマウスでクリックされたかどうかを簡単に知ることができます。CDialogBarでマウスがクリックされた場所を確認します。
CDialogBarからサブクラス化されたコントロールがあり、ツールバーのようなボタンがいくつかあります。 CDialogBarクラスでWM_LBUTTONDOWNを捕捉すると、コントロール上にあるボタンの1つがマウスでクリックされたかどうかを簡単に知ることができます。CDialogBarでマウスがクリックされた場所を確認します。
CDialogBar
通常、クラスは通常のウィンドウコントロールをホストしているため、ボタンをクリックするとダイアログウィンドウクラスではなく、このコントロールウィンドウにメッセージが送信されます。WM_LBUTTONDOWN
だからもしあなたがそれらのメッセージを(実際には)傍受したいなら、ウィンドウをサブクラス化してメッセージを処理するか、メッセージフックをインストールする必要があります。
Spy++
ツールを使用して、どのメッセージが実際にあなたのCDialogBar
ウィンドウに届いているかを確認して、それらを処理することが挑戦の解決策であるかどうかを確認することもできます。
はい、私はWM_LBUTTONDOWNをキャッチしますが、私はWM_LBUTTONDOWNをキャッチしますが、ユーザーがコントロール上にあるボタンをクリックすると、別の動作が必要になります – Hate
コントロールをサブクラス化(クリアするにはダイアログバー自体なし) 'WndProc'にメッセージを受け取ったときの動作を確実に上書きすることができ、メッセージを転送するか、自分で処理することができます。ここでは、ボタンがダイアログバーによってホストされていることはあまり重要ではありません。重要なことは、メッセージ処理をインターセプトすることをサブクラス化することです。 –
はい、私はできると私は知っています。あなたは質問を理解していない、それは私の悪い英語のためです:(私はWM_LBUTTONDOWNイベントをキャッチし、それを処理します。私はPreTranslateMessageをオーバーライドしました。質問は、ユーザーがコントロール内のボタンの1つをクリックした場合、 、または単にコントロールの表面に。実際に私はボタンをクリックした場合、このメッセージをCDialogBar :: PreTranslateMessageに転送したいと思います。 surface – Hate