ウインドウ右上のキャンセルボタンでアプリを終了させた場合だけに呼び出される関数

解決


銀河鉄道  2007-08-22 02:18:52  No: 66075

実は、他のサイトで質問したのですが、調子が悪いらしく、うまく投稿できなので、こちらで質問します。

.net2005 VISTA です。
初歩的な質問ですが、よろしくお願いします。

フォームビューで、ウインドウ右上のキャンセルボタンでアプリを終了させた場合だけに
呼び出される関数を、お教えください。

終了ボタンをつくり、AfxGetMainWnd()->PostMessageW(WM_CLOSE)で、終了させるようにしたのですが、
終了時に、キャンセルボタンと、それぞれ別な処理をしたいのです。
OnDestroy()ですと、両方とも入ってしまいます。

いろいろ探したのですが、よく分かりませんでした。


wclrp ( 'o')  2007-08-22 05:18:06  No: 66076

他に終了させ方は、メニューで閉じた場合とかAlt+F4とかタスクマネージャがあるけど。

処理自体はOnDestroy()に書きたいということかな。
そうでなければ終了ボタンに処理を置けばいいことになってしまうからね。
あるいはWM_CLOSEじゃなくて終了ボタン用に独自メッセージ作ってもいいし。

考えてみた。以下に擬似言語で示す。当然動作確認してない。
グローバル変数にするが推奨しているわけじゃない。

extern bool g_isEndClick;

void CMyView::OnEndClick() // 終了ボタン
{
  g_isEndClick = true;
}

bool g_isEndClick = false;

CMyMainWnd::CMyMainWnd()
{
  g_isEndClick = false;
}

void CMyMainWnd::OnDestroy()
{
  if(g_isEndClick)
  {
  }
  else
  {
  }
}


銀河鉄道  2007-08-22 05:30:36  No: 66077

wclrp ( 'o') さん、ありがとうございます。

フラグを立てて、OnDestroy()で切り分けることは考えたのですが、それより、ウインドウ右上のキャンセルボタンが押された時だけ呼び出される関数があるのではないかと思ったのです。
ダイアログベースなら簡単なのですが。

やはり、そうした関数はないのでしょうか。


subaru  2007-08-22 21:24:59  No: 66078

MFCなら
OnSysCommand
OnClose
OnDestroy
の順でハンドリングできると思います。


銀河鉄道  2007-08-23 05:46:44  No: 66079

subaruさん、ありがとうございます。

OnCloseで解決しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加