通知
すべてクリア
Topic starter
2007年2月2日 4:25 PM
VC6 MFCで、メニュー(コンテキストメニューも)が表示されていることを
任意のタイミングで知ることは可能でしょうか?
タイマーを使い、そのコールバックの中で
「フォーカスを持っているときだけ定期的に画面更新」処理をしているのですが、
メニュー表示中もGetFocusの情報はウィンドウ自身のままになっています。
(MouseMoveなどのメッセージは来ません)
タイマー処理の中で、メニューが表示されていたら今回はパス
という判定を入れればよいかなと思っています。
よろしくお願いいたします。
2007年2月2日 5:31 PM
CWinApp::ProcessMessageFilter()関数をオーバーライドすれば、
メニューの表示中に投げられるメッセージを捕まえることができますので、
メニューの表示/非表示のタイミングが検出できるかもしれません。
Topic starter
2007年2月2日 8:01 PM
メニュー表示関係のメッセージについて調べてみたところ、
WM_ENTERMENULOOPとWM_EXITMENULOOPというメッセージがありました。
これらのメッセージはCWinApp::ProcessMessageFilter()には来ないようですが、
メインウィンドウにWM_ENTERMENULOOPとWM_EXITMENULOOPのハンドラを作成し、
その中でフラグを更新し、タイマー処理内ではこのフラグを参照することにより、
目的の動作を実現することができました。
ありがとうございます。