アプリケーション自体を閉じたいときに、MFCダイアログベースのアプリケーションのメインウィンドウを閉じる方法を誰かが答えることができますか?アプリケーションはMSVS2010で作成されました。よろしくお願いします。
ユージーン。
これを試して:
ASSERT( AfxGetMainWnd()!=NULL );
AfxGetMainWnd()->SendMessage(WM_CLOSE);
ダイアログhwndにWM_CLOSEを送信できます。PostQuitMessageは、アプリケーションの実行も終了できるようにする必要があります。
シャットダウンの一部としてどのような処理を行いたいかによって異なります。それ以上の処理を行わずにメッセージ ループを終了することだけが必要な場合は、 を呼び出すことができますPostQuitMessage( exitCode )
。exitCode
プロセスの終了コードとして保存されます。
OK/Cancel ハンドラーを呼び出したい場合は、それぞれOnOK()
orを呼び出す必要がありOnCancel()
ます。の既定の実装でOnOK()
は、ダイアログ データの保存と検証が試行され、実行が成功するとEndDialog( IDOK )
、メッセージ ループを終了するための呼び出しが行われます。OnCancel()
単に呼び出すためのデフォルトの実装EndDialog( IDCANCEL )
。どちらもプロセスの終了コードを指定できません。これらのメンバー関数のいずれかをオーバーライドした場合は、シャットダウンを防止したい場合を除き、特殊なコードを実行した後に基本クラスの実装を呼び出す必要があります。
OnOK()
and はandOnCancel()
の保護されたメンバーでCDialog[Ex]
あり、外部から直接アクセスできないことに注意してください。ダイアログクラスの外部からいずれかを呼び出す必要がある場合は、それらを公にオーバーライドする必要があります。を使用して、メイン ダイアログへのポインタを取得できますCMyDialog* pDlg = dynamic_cast< CMyDialog* >( AfxGetMainWnd() );
。