実は、他のサイトで質問したのですが、調子が悪いらしく、うまく投稿できなので、こちらで質問します。
.net2005 VISTA です。
初歩的な質問ですが、よろしくお願いします。
フォームビューで、ウインドウ右上のキャンセルボタンでアプリを終了させた場合だけに
呼び出される関数を、お教えください。
終了ボタンをつくり、AfxGetMainWnd()->PostMessageW(WM_CLOSE)で、終了させるようにしたのですが、
終了時に、キャンセルボタンと、それぞれ別な処理をしたいのです。
OnDestroy()ですと、両方とも入ってしまいます。
いろいろ探したのですが、よく分かりませんでした。
他に終了させ方は、メニューで閉じた場合とか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
{
}
}
wclrp ( 'o') さん、ありがとうございます。
フラグを立てて、OnDestroy()で切り分けることは考えたのですが、それより、ウインドウ右上のキャンセルボタンが押された時だけ呼び出される関数があるのではないかと思ったのです。
ダイアログベースなら簡単なのですが。
やはり、そうした関数はないのでしょうか。
MFCなら
OnSysCommand
OnClose
OnDestroy
の順でハンドリングできると思います。
subaruさん、ありがとうございます。
OnCloseで解決しました。
ツイート | ![]() |