パスワードを忘れた? アカウント作成
564461 journal

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は激しく使いやすいんだけど。
</心の叫び>

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • を用意するとIDOKやIDCANCELなコントロールの有無に関わらず閉じなくなるのですが、システムメニューの「閉じる」で閉じようにも、OnCancel()に行くので、何しても閉じなくなるのですな。

    昔、WM_CLOSEだかWM_DESTROYだかでFALSEを返すと終わらないような気がしたのですが記憶違いだったのかな…
    # MFCじゃ軒並みvoid型ですが
    --
    「脅しじゃない。会長はいつだって本気だ」
    • MFCはよく判らないので、最初は、OnOK()とOnCancel()をオーバーライドしようとしたり、
      CEditを派生してVK_RETURN/VK_ESCAPEをシカトしようとしたのですが、うまくい行きませんでした。
      仕方がないので、フックでも使おうかと思って、その前に"ダイアログ ENTER"でググったら、一発で見つかりました。orz

      デファクトに背を向け、BCBばっかり使っていたツケが回ってきたようです。

      親コメント
typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...