• ベストアンサー

キーボード入力について

VC++6.0MFCのダイアログベースでデスクトップアプリを作成しています。 現状ですが、まずEscとEnterをクリックすると、 アプリが終了してしまいます。 なぜかわからないのですが、 そもそもキーボード入力を無効にしたいのです。 SetWindowsHookExというAPIを使えばできそうなんですが、 いかんせん、初心者でしてどの部分でどのような記述を すればいいのかがわかりません。 どなたかご教授ください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • n_n
  • ベストアンサー率80% (4/5)
回答No.1

ダイアログベースのアプリは、CDialogが基底となっていて、IDOKまたはIDCANCELの メッセージを受け取ると。それぞれ、CDialoog::OnOK()、CDialoog::OnCancel()が 実行されて終了します。 [Enter]はIDOK、[ESC]はIDCANCELのメッセージが発行されているので終了しています。 この2つのキーで終了させなくする方法で手っ取り早いのは、ダイアログのクラスに   virtual void OnOK() {;}   virtual void OnCancel() {;} を追加してやれば終了しなくなります。 本当に終了したいときは、別途メッセージを作成して、そのメッセージを受け取った ときに、CDialoog::OnOK()またはCDialoog::OnCancel()を実行して終了してください。

関連するQ&A

  • 名前を付けて保存パネル等でESC/ENTER無効にする方法

    MFCにて自分でつくったダイアログに対してESC/ENTERを無効にする方法はわかりましたが、名前を付けて保存や印刷パネルなど元からあるパネルのESC/ENTERを無効にする方法はありますでしょうか?

  • キーボード入力で、各ボタンに割り付けた処理を行いたい

    現在、VC++6を用いて、MFC を使わずにアプリケーションを作っている初心者です。 ダイアログboxにボタンコントロールを5個つけました。 キーボード入力で、各ボタンに割り付けた処理を行いたいのですが、 簡単な方法はありますか? よろしくお願いします。

  • MFCのCDialogクラスについて、、、

    環境:VC6.0、MFC、WinNT4.0 普通のモードレスダイアログを作成して、メニューから呼び出すようにしました。 デフォルトについてくる「OK」「Cancel」ボタンは要らないので削除しました。 ところが、アプリケーションを実行して作成したダイアログを呼び出した後、「Enter」或いは「Esc」キーを押すとダイアログが消えてしまいます。 それが消えないようにしたいのですが、、、 ご指導お願いします。

  • ダイアログベースでのキー入力について

    現在Win2000、VC++6.0でダイアログベースのアプリを作っています。 ボタンの存在しないダイアログにしているので、 終了するにはタスクバーから閉じるか、ALT+F4キーだけしかないと思っていましたが、 Enterキーを押すと終了してしまうことに気づきました。 このEnterキーを押すと終了してしまうのを回避するには どうしればいいのでしょうか? それと、もう一つ質問なのですが、 WM_CHARメッセージハンドラを追加しましたが、 キーを入力してもOnChar関数にやってきません。 (デバッグでブレークポインタを置いてみたのですが・・・) なにを間違えているのかが分かりません。 どうぞよろしくおねがいします。

  • ダイアログベースのEXEでESCキーを押しても終了しないようにする方法

    VC++ 6.0 でダイアログベースのEXEを造っています。 ESCキーを押すとEXEは終了しますが、ESCキーを無視して 終了しないようにするにはどうしたらよいでしょうか? 識者の方、ご教授願います。

  • windows終了時のメッセージについて

    いつもお世話になります。 VC++6.0MFCダイアログベースでデスクトップアプリ を作成しているものです。 アプリ終了でINIファイルにウィンドウ位置を記憶させ 次回起動時に終了位置に表示させているのですが、 アプリが立ち上がったまま、スタートメニューからウィンドウズ自体を 終了させた時、アプリにはどのようなメッセージが飛んできているのか どなたか教えていただけないでしょうか? よろしくお願い致します。

  • MFCでデータベースを

    はじめまして。 VC++の初心者なのですが、MFCで開発を行おうとしております。そこで、MFCでのデータベースの扱い方をおしえていただきたいのです。 MFCのダイアログベースで開発をしているのですが、そこからデータベースを読みに行ったりは可能なのでしょうか。 よいサイト等あれば教えていただけないでしょうか。よろしくお願いいたします。

  • OSでの動作スピードの違い

    こんにちは。 現在VC++6.0、Win2000環境でプログラムしています。 MFCでダイアログベースで、クライアント領域だけのダイアログウィンドウを作って、 勝手に移動したりするアプリを作っています。 Win2000環境ではバリバリと動くのですが、 OSをWin98にしてEXEファイルを起動すると めちゃくちゃ遅くなります。(CPUは同じ) 不思議なことに、別のウィンドウをアクティブにして、 そのクライアント領域で マウスカーソルをぐりぐり移動させると、動きが速くなるんです。 一応動いているところを見ると、Win98で使えないAPIを 使っているふうでもなさそうです。 どのような機能を使うと、こういった処理速度の違いが誘発されやすくなるのでしょうか? もしご経験の方や、推測が出来る方がいらっしゃいましたら、 どうか宜しくお願いします。

  • vc++6.0で過去のソースコードを全て流用

    いつもお世話になっております。 過去にvc++6.0のMFCを利用して作成したダイアログベースのアプリを 次に作ろうとしているアプリに流用したいのですが、方法がわかりません。 現状、過去に作成されたファイル(AAA.cppやAAA.dsp)を全部コピーして ファイル名を変えたり、dspの中身を変更したりしてもうまくいかないです。 簡単に全てのソースコードを流用する方法がありましたら教えて頂けないでしょうか? OSはWinddowsXPを使用しています。 よろしくお願いします。

  • フォルダ参照ダイアログAPIをVBAに組み込んだときのESCキー押下

    フォルダ参照ダイアログAPIをVBAに組み込み、フォルダ選択画面が表示されたとき、ダイアログ上の「OK」「キャンセル」以外に、キーボードの「ESC」キーを押下すると、VBAの「コードの実行を中止」ダイアログが表示されプログラムの実行が中断します。「ESC」キーを押下しても「キャンセル」と同等の処理で、「コードの実行を中止」ダイアログを表示しないようにできるでしょうか。お知恵をお貸しください。