ウィンドウ プロシージャにディスパッチする直前に、メッセージ ループ内のメッセージを読み上げたいと考えていました。このように読み取ろうとしたほとんどのメッセージは正しく読み取られましたが、ウィンドウを閉じると、WM_CLOSE
またはWM_DESTROY
メッセージが受信されなかったかのように読み取れませんでした。これが私がすることです:
void Framework::Run(){
while(running){
MSG msg;
while(PeakMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
switch(msg.message){
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_QUIT:
running = false;
break;
//...other cases...
}
DispatchMessage(&msg);
}
//...
}
}
最初のケースにブレークポイントを設定しましたが、(「X」をクリックして) ウィンドウを閉じてもブレークポイントにヒットしません。ただし、ウィンドウプロシージャで確認するとWM_DESTROY
、読み込まれ、すべてがうまくいきます。外に出ないのはなぜですか?
そのようなメッセージはウィンドウ プロシージャに直接送信されますか? どのように?