1

ユーザーに「アプリケーションを終了してもよろしいですか?」と尋ねたいのですが。質問。ユーザーが [はい] を押すと、アプリケーションは終了します。ユーザーが [いいえ] を押した場合、アプリケーションは引き続き実行されます。それ、どうやったら出来るの?

Visual C++ 2008 と mfc を使用しています。

4

2 に答える 2

2

メッセージを処理する必要があります。これは、クラスのメッセージ マップに追加、関数の実装を提供することWM_CLOSEによって MFC で行うことができます。ON_WM_CLOSECMainFrameOnClose

(クラス ウィザードでこれを行うことができます。)

void CMainFrame::OnClose()
{
    if (AfxMessageBox("Exit application?", MB_YESNO) == IDYES)
        __super::OnClose();
}

__superは、最も直接の基底クラスを参照できるようにする MSVC 拡張です。別のコンパイラでコンパイルする場合 (MFC アプリの場合とは異なります)、または非標準の拡張機能を使用すると不快になる場合は、基本クラスの実際の名前に置き換えることができます。

于 2013-05-22T07:17:51.803 に答える
0

Marijke によって提案されたアプローチは正しいです。ただし、コンパイルするには、CMainFrame メッセージ マップに ON_WM_CLOSE を追加する必要があり、Marijke が CFrameWnd を使用した実際の基本クラスを使用する必要があります。(考えられる基本クラスはいくつかあります。) たとえば、基本クラスが CMDIFrameWndEx の場合、メッセージ マップは次のようになります。

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
ON_WM_CREATE()
ON_WM_CLOSE()
....
于 2013-05-22T14:45:05.523 に答える