パスワードを忘れた? アカウント作成
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

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

読み込み中...