設定した時間にポップアップメニューを表示するソフトを作成していますが
表示されたポップアップメニューを選択せず
関係無い所をクリックしたら破棄する動作にしたいのですが
メインウィンドウは隠している為か、メッセージが送られてきません
この場合は、タイマー等を用いて
関係ない所をクリックした事を検出するしかないでしょうか?
それとも関係ない所をクリックした場合でも、何かメッセージが送られるのでしょうか?
どうぞよろしく御願いします。
ポップアップメニューならば・・・
デスクトップのウィンドウハンドルにでも、何かフォーカスが
移動したか、キー入力があったようなメッセージをPostMessage
してやれば、勝手に閉じると思いますが・・・
昔、そんな手でダマしたように記憶してます。
(現時点では未確認・・・)
以上。
オショウさん、レス有難うございます。
TrackPopupを呼ぶ前にSetFocus(GetDesktopWindow())
のようにするのでしょうか?
ポップアップメニューを表示した際、関係無いウィンドウをアクティブにすれば破棄されますが
その後にまた表示、同一のウィンドウはアクティブされているので
以前破棄した時と同じ動作を行っても、ポップアップメニューは破棄されません
色々と試しいますが、まだ良い方法は見つかっていません
宜しければご教授の程御願いします。
一度、書いたとおりのことやってみてもらえますでしょうか?
PostMessage(GetDesktopWindow(), WM_CHAR, 0, 0);
か・・・
どこまで擬似的にメッセージを送信してやればよかったかは
逆にSpy++等で飛び交っているメッセージを捕捉して解読して
やれば可能かと・・・
以上。
ツイート | ![]() |