終了コードを任意の値にする

Visual C++プログラミングのメモ

【Visual C++ 2008】【MFC】

 「ダイアログベースのアプリケーションを、[Esc]キーで終了しないようにする」 に書いた通り、ダイアログベースのアプリケーションでは、正常終了しても終了コードがゼロ以外のパターンがある。 ゼロで終了するためには、CWinApp::ExitInstanceをオーバーライドする。

(1)
 アプリケーションクラスのクラスヘッダのpublicに、メンバ関数定義を追加。
(privateでもprotectedでも正常動作するが、念のため、CWinApp::InitInstanceのオーバーライドに一致させておく)


    int ExitInstance();

(2)
 メンバ関数を記述。


int CXxxxApp::ExitInstance()
{
    CWinApp::ExitInstance();

    // 終了コード
    return 0;
}

(メモ)

  • オーバーライドしない場合、CWinApp::ExitInstanceの戻り値が終了コードになる
  • MSDNライブラリの「CWinApp::ExitInstance」を参照のこと