A7Mの日記: 覚え書き:VC++のダイアログベースアプリで、Enter/Esc押下でアプリを終了させない方 2
日記 by
A7M
ダイアログクラスのPreTranslateMessageをオーバーライドして、
WM_KEYDOWNメッセージを処理すればOK。
BOOL CFooDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN) {
switch (pMsg->wParam) {
case VK_RETURN:
case VK_ESCAPE:
return TRUE;
default:
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
<心の叫び>
あ゛、あ゛、あ゛、あ゛!
VC++は嫌だぁ~~~!
MFCの実装が醜すぎる!!ヽ(`Д´)ノ ウワァァァン
IDEは激しく使いやすいんだけど。
</心の叫び>
CDialog::側を呼び出さないOnOK()とOnCancel() (スコア:1)
昔、WM_CLOSEだかWM_DESTROYだかでFALSEを返すと終わらないような気がしたのですが記憶違いだったのかな…
# MFCじゃ軒並みvoid型ですが
Re:CDialog::側を呼び出さないOnOK()とOnCancel() (スコア:1)
CEditを派生してVK_RETURN/VK_ESCAPEをシカトしようとしたのですが、うまくい行きませんでした。
仕方がないので、フックでも使おうかと思って、その前に"ダイアログ ENTER"でググったら、一発で見つかりました。orz
デファクトに背を向け、BCBばっかり使っていたツケが回ってきたようです。