プロが教えるわが家の防犯対策術!

環境:WindowsXP + VisualStudio2010 + MFC

MFCのViewの終了処理に関して質問があります。
Viewの右上の×印をクリックした際に終了確認を表示して
ユーザーが終了を拒否した場合、Viewの終了を無効にしたい
と考えています。

MFCでこのような制御を行うには、どのようなイベントで
どのような処理をすれば良いのでしょうか?

ご存知の方がいたら教えて下さい。
どうぞ宜しくお願い致します。

A 回答 (1件)

Viewと言われているのかわからないので違うかもしれませんが。


×印はシステムコマンドに該当する機能ですから、WM_SYSCOMMANDを使えば可能ですよ。
×印がクリックされるとnIDにSC_CLOSEが送られてきますから、メッセージボックスを出してNOならデフォルト処理を省略するようにすればいいです。

但し処理する場所はCMainFrameの方です。
WM_SYSCOMMANDのハンドラ作って、以下の感じで制御できます。

void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
  if((nID != SC_CLOSE) || ((nID == SC_CLOSE) && (MessageBox(_T("終了しますか?"), _T("終了"), MB_YESNO) == IDYES))) {
    CFrameWndEx::OnSysCommand(nID, lParam);
  }
}
    • good
    • 0
この回答へのお礼

教えていただいた方法で解決できました。
有難うございました。

お礼日時:2012/12/03 11:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!