【プログラムトピック(windows)】
【Windowsの終了時のメッセージ】
Windowsを終了させると(ログオフ、シャットダウンなど)、各ツールへは WM_CLOSE や WM_DESTROY は発行されない。
その代わり、全てのツールのトップレベルウインドウへ WM_QUERYENDSESSION が送られる。
Windowsの終了に同意できる場合には TRUE 、同意できない場合には FALSE を返す。
その後、同意してもしなくても WM_ENDSESSION が送られてくるので、wParam を見て終了か判断する。
wParam は終了する場合には TRUE 、終了しない場合には FALSE。
データーの保存などをする場合には、WM_ENDSESSION で wParam==TRUE の時にすると良い。
ツールなどで終了処理を行う場合には、WM_CLOSE/WM_DESTROYとWM_ENDSESSIONで行う必要がある。
// Windowsを終了しても良いかアプリケーションに問い合わせる
case WM_QUERYENDSESSION:
if(MessageBox( hDlg, "Windowsを終了していい?", szAppName, MB_ICONEXCLAMATION | MB_YESNO ) == IDYES ) return TRUE;
return FALSE;
// 問い合わせた結果を知らせる
case WM_ENDSESSION:
if( wParam==TRUE ) {
// 終了時の処理
}
break;
戻る