メニュー表示中の判定 – プログラミング – Home

通知
すべてクリア

[解決済] メニュー表示中の判定


亀山
 亀山
(@亀山)
ゲスト
結合: 18年前
投稿: 133
Topic starter  

VC6 MFCで、メニュー(コンテキストメニューも)が表示されていることを
任意のタイミングで知ることは可能でしょうか?

タイマーを使い、そのコールバックの中で
「フォーカスを持っているときだけ定期的に画面更新」処理をしているのですが、
メニュー表示中もGetFocusの情報はウィンドウ自身のままになっています。
(MouseMoveなどのメッセージは来ません)

タイマー処理の中で、メニューが表示されていたら今回はパス
という判定を入れればよいかなと思っています。
よろしくお願いいたします。


引用未解決
トピックタグ
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

CWinApp::ProcessMessageFilter()関数をオーバーライドすれば、
メニューの表示中に投げられるメッセージを捕まえることができますので、
メニューの表示/非表示のタイミングが検出できるかもしれません。


返信引用
亀山
 亀山
(@亀山)
ゲスト
結合: 18年前
投稿: 133
Topic starter  

メニュー表示関係のメッセージについて調べてみたところ、
WM_ENTERMENULOOPとWM_EXITMENULOOPというメッセージがありました。

これらのメッセージはCWinApp::ProcessMessageFilter()には来ないようですが、
メインウィンドウにWM_ENTERMENULOOPとWM_EXITMENULOOPのハンドラを作成し、
その中でフラグを更新し、タイマー処理内ではこのフラグを参照することにより、
目的の動作を実現することができました。
ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました