【プログラムトピック(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;
戻る