※ ChatGPTを利用し、要約された質問です(原文:Visual C++のアプリケーションクラス)
Visual C++のアプリケーションクラスの質問
このQ&Aのポイント
Visual C++のアプリケーションクラスでアプリケーションを終了させる方法について質問します。
質問1: CEndDlgというダイアログクラスとCDialogクラスの関係について教えてください。
質問2: CDlgTestAppクラスの中でCWinApp::OnAppExit()を呼ぶ理由について教えてください。
void CDlgTestApp::OnAppExit()
{
// TODO: ここにコマンド ハンドラ コードを追加します。
CDialog endDialog(IDD_DLG_EXIT); // CEndDlgの基本クラスを初期化
if(endDialog.DoModal()==IDOK){
CWinApp::OnAppExit(); // 基本クラスの公開メンバー関数(このアプリケーション自体がCWinAppクラスの派生クラスのオブジェクト(theApp))
}
}
「アプリケーションを終了しますか?」というダイアログのOKボタン(OKかキャンセルボタン)を押したときに、アプリケーションを終了させたいのですが、↑をDlgTestというアプリケーションのアプリケーションクラスのコマンドハンドラとして記述したところ、ちゃんとした動作(アプリの終了)をしています。
ここで質問ですが、
(1)CEndDlgという、ダイアログクラスがありながら、なぜわざわざ、その基本クラスのCDialogクラスのオブジェクトを作成しているのか。CEndDlg endDialog(IDD_DLG_EXIT); じゃだめなのか。
(2) CDlgTestAppというクラスののコマンド(イベント)ハンドラのなかで、その基本クラスのCWinApp::OnAppExit(); と、コードしているのか。こう記述しないとアプリそのものを終了させることは
できないのでしょうか。
その2点がわかりません。(ちなみに上のコードはテキストを参照したのですが)
ご回答、どうぞよろしくお願いします。
お礼
ご返答、どうもありがとうございました。