【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」を参照のこと