-1

ボタンをクリックすると、ポップアップ スタイルのウィンドウを作成して表示します。そして、ウィンドウの外側をクリックしたときに、このウィンドウを非表示または破棄したい。wm_killfocus メッセージを使用してこれを行うことができます。ウィンドウがメッセージを受信したら、ウィンドウを非表示にします。しかし、問題は、ウィンドウが存在するときにボタンをクリックすると、ウィンドウが非表示になることです。しかし実際には、ボタンをクリックすると、ウィンドウは wm_killfocus メッセージを受信し、次にボタンは WM_lbuttondown メッセージを受信し、wm_killfocus を受信するとウィンドウは非表示になり、クリック メッセージ イベントによりウィンドウが再び表示されます。したがって、最終的な効果は、ウィンドウが非表示にならないことです。

4

1 に答える 1

1

ウィンドウをすぐに破棄する代わりに、カスタム ウィンドウ メッセージを自分自身にポストしますPostMessage()。メッセージが受信される前にボタンがクリックされた場合は、どこかにフラグを設定し、必要に応じて既存のウィンドウを更新します。メッセージ ハンドラーがメッセージを受信すると、フラグが設定されていない場合にのみ、ウィンドウを非表示/破棄します。

于 2012-09-26T23:14:29.443 に答える