1

これら2つのメッセージング定数の違いを知りたいだけです。WndProcボタンを閉じるメッセージを処理するために、オーバーライドするときにメソッドでどちらを使用する必要がありますか。

4

2 に答える 2

4

WM_CLOSE何らかの方法でウィンドウを閉じるように要求されるたびに、ウィンドウメッセージとして送信されます。

SC_CLOSEWM_SYSCOMMANDユーザーが閉じるボタンを押すと(またはウィンドウのコントロールメニューから閉じるを選択すると)、メッセージのパラメーターとして送信されます。

どちらをリッスンするかは、傍受/処理しようとしているアクションによって決まります。

于 2012-04-11T07:48:48.733 に答える
1

msdnによると、SC_CLOSEはWM_SYSCOMMANDメッセージのwParam値の1つです。

ユーザーがウィンドウメニュー(以前はシステムメニューまたはコントロールメニューと呼ばれていました)からコマンドを選択したとき、またはユーザーが最大化ボタン、最小化ボタン、復元ボタン、または閉じるボタンを選択したときに、ウィンドウはこのメッセージを受け取ります。

WM_CLOSEはメッセージそのものです。

ウィンドウまたはアプリケーションを終了する必要があるというシグナルとして送信されます。

したがって、ウィンドウがパラメータ値SC_CLOSEのWM_SYSCOMMANDを受信すると、ウィンドウを閉じることができます(WM_CLOSEメッセージを送信します)。

UPDATE(ユーザーにウィンドウを適切に閉じさせる場合):アプリケーションは、ユーザーが選択を確認した場合にのみ、WM_CLOSEメッセージを処理し、DestroyWindow関数を呼び出すことにより、ウィンドウを破棄する前にユーザーに確認を求めることができます。

ところで、C#を使用している場合は、FormClosingイベントを処理してそこで作業できますか。クローズをキャンセルする必要がある場合はe.Cancel = true、イベント引数を設定するだけです。

于 2012-04-11T07:49:14.473 に答える