ユーザーに「アプリケーションを終了してもよろしいですか?」と尋ねたいのですが。質問。ユーザーが [はい] を押すと、アプリケーションは終了します。ユーザーが [いいえ] を押した場合、アプリケーションは引き続き実行されます。それ、どうやったら出来るの?
Visual C++ 2008 と mfc を使用しています。
ユーザーに「アプリケーションを終了してもよろしいですか?」と尋ねたいのですが。質問。ユーザーが [はい] を押すと、アプリケーションは終了します。ユーザーが [いいえ] を押した場合、アプリケーションは引き続き実行されます。それ、どうやったら出来るの?
Visual C++ 2008 と mfc を使用しています。
メッセージを処理する必要があります。これは、クラスのメッセージ マップに追加し、関数の実装を提供することWM_CLOSE
によって MFC で行うことができます。ON_WM_CLOSE
CMainFrame
OnClose
(クラス ウィザードでこれを行うことができます。)
void CMainFrame::OnClose()
{
if (AfxMessageBox("Exit application?", MB_YESNO) == IDYES)
__super::OnClose();
}
__super
は、最も直接の基底クラスを参照できるようにする MSVC 拡張です。別のコンパイラでコンパイルする場合 (MFC アプリの場合とは異なります)、または非標準の拡張機能を使用すると不快になる場合は、基本クラスの実際の名前に置き換えることができます。
Marijke によって提案されたアプローチは正しいです。ただし、コンパイルするには、CMainFrame メッセージ マップに ON_WM_CLOSE を追加する必要があり、Marijke が CFrameWnd を使用した実際の基本クラスを使用する必要があります。(考えられる基本クラスはいくつかあります。) たとえば、基本クラスが CMDIFrameWndEx の場合、メッセージ マップは次のようになります。
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
ON_WM_CREATE()
ON_WM_CLOSE()
....