ポップアップメニュー表示時にダイアログを前面に出さないには – プログラミング – Home

ポップアップメニュー表示時にダイアログ...
 
通知
すべてクリア

ポップアップメニュー表示時にダイアログを前面に出さないには


おみおみ
 おみおみ
(@おみおみ)
ゲスト
結合: 20年前
投稿: 20
Topic starter  

VC++.net MFC ダイアログベース

タスクトレイのアイコンからポップアップメニューを出す際、
SetForegroundWindow()をすることが推奨されているようなのですが、
そうするとダイアログが前面に出てきてしまいます。
もともと前面にある場合はいいのですが、他のアプリ等のウィンドウで隠れている場合にも
前面に出てきてしまいます。これを防ぐ方法はないでしょうか?
ちなみに他にダミーのダイアログを作ってShowWindow(SW_HIDE)で非表示にして、
そのダミーのダイアログをSetForegroundWindowの対象にしてみましたが、
他のダイアログが前面に出てきてしまいました。

今ソースがないのですが、明日にでも載せようと思います。
よろしくお願いします。


引用解決済
トピックタグ
おみおみ
 おみおみ
(@おみおみ)
ゲスト
結合: 20年前
投稿: 20
Topic starter  

遅くなりましたが、ソースです。

WM_RBUTTONUPのとき、

//メニュー表示
//カーソルの現在位置を取得
POINT point;
::GetCursorPos(&point);

SetForegroundWindow();//←ここが問題

VERIFY(menu.LoadMenu(IDR_MENU1));
pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);

pPopup->TrackPopupMenuEx(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x, point.y,
this,NULL);

PostMessage(WM_NULL);

----------------------

SetForegroundWindowをしないとポップアップメニューが消えなくなってしまうのですが、
この関数のせいで他のアプリ等のウィンドウで隠れている場合でも、
前面に出てきてしまいます。
分かる方いらっしゃらないでしょうか?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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