[MFC]メニューからダイアログを終了する

MFC
この記事は約2分で読めます。

この記事ではダイアログに追加したメニューからダイアログ自体、つまりアプリケーションを終了する方法について説明します。

ダイアログを終了するための[テキストエディタの終了]メニューを用意し、押下した際に呼ばれるイベントハンドラを追加しましょう。

メニューの追加の方法については以下の記事を参考にしてください。

イベントハンドラを追加したら、実際の処理を書いていきます。

void CMyEditorDlg::OnMEndApp()
{
	// TODO: ここにコマンド ハンドラー コードを追加します。
	CDialogEx::OnClose();

	if (QuitFileEdit() == FALSE)
	{
		return;
	}
	AfxGetMainWnd()->DestroyWindow();
}

この処理でダイアログを閉じる処理をしているところは、DestroyWindow()の部分です。

AfxGetMainWnd()でメインのウィンドウを取得し、そのウィンドウの終了を行っています。

アプリの終了を行うにはSendMessage()でWM_CLOSEメッセージを投げるのもありです。するとOnClose()が走ってアプリケーションの終了を行うはずです。ずっと作ってきている超シンプルなテキストエディタは、OnClose()が今うまく動いていない(キャンセル処理が動作していない)ので今回この処理を採用しました。本当なら、どちらも同じ処理を走らせるのが作りとしては正しいです。

コメント

タイトルとURLをコピーしました