Last Updated 2005/06/02
Programming Tips Visual C++ MFC 他のコントロール  索 引 
InitInstance()で終了させる
2005/06/02

初期化や設定などで異常があればアプリケーションを終了させる.

CWinApp::InitInstance() の最後で return FALSE とすると,

Warning: Destroying non-NULL m_pMainWnd

と警告が出る.これはメインウィンドウを作成して,NULL でないポインタを破棄しようとしているからである.(たぶん)
(実験によりドキュメントテンプレートが作成される前に FALSE を返すと問題はない)

InitInstance() で FALSE を返して終了するには,

        if (!ProcessShellCommand(cmdInfo))
                return FALSE;

よりも以前に行わなければならない.

InitInstance() にて FALSE を返せるのはメインフレームの作成に失敗した時だからである.(メインフレームが存在しない場合のみ FALSE を返せる)
ウィンドウが生成される前になんらかの異常で終了させる場合はそのタイミングで行う.


メインフレームが作成された後で終了させたいのであれば WM_CLOSE をポストする.
(メインフレームを終了させる必要がある)
m_pMainWnd->PostMessage(WM_CLOSE);


参照
アプリケーション終了方法
前後のTips
InitInstance()で終了させる

DSS ProgrammingTipsCGI Ver2.01