ウィンドウ外のポップアップメニューを閉じるには?


レイン  2009-05-26 03:57:29  No: 70208

設定した時間にポップアップメニューを表示するソフトを作成していますが
表示されたポップアップメニューを選択せず
関係無い所をクリックしたら破棄する動作にしたいのですが
メインウィンドウは隠している為か、メッセージが送られてきません

この場合は、タイマー等を用いて
関係ない所をクリックした事を検出するしかないでしょうか?

それとも関係ない所をクリックした場合でも、何かメッセージが送られるのでしょうか?
どうぞよろしく御願いします。


オショウ  2009-05-26 08:15:23  No: 70209

ポップアップメニューならば・・・
デスクトップのウィンドウハンドルにでも、何かフォーカスが
移動したか、キー入力があったようなメッセージをPostMessage
してやれば、勝手に閉じると思いますが・・・

昔、そんな手でダマしたように記憶してます。
(現時点では未確認・・・)

以上。


レイン  2009-05-27 07:22:06  No: 70210

オショウさん、レス有難うございます。

TrackPopupを呼ぶ前にSetFocus(GetDesktopWindow())
のようにするのでしょうか?

ポップアップメニューを表示した際、関係無いウィンドウをアクティブにすれば破棄されますが
その後にまた表示、同一のウィンドウはアクティブされているので
以前破棄した時と同じ動作を行っても、ポップアップメニューは破棄されません

色々と試しいますが、まだ良い方法は見つかっていません
宜しければご教授の程御願いします。


オショウ  2009-05-27 18:28:12  No: 70211

一度、書いたとおりのことやってみてもらえますでしょうか?
PostMessage(GetDesktopWindow(), WM_CHAR, 0, 0);
か・・・
どこまで擬似的にメッセージを送信してやればよかったかは
逆にSpy++等で飛び交っているメッセージを捕捉して解読して
やれば可能かと・・・

以上。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加