MFCプログラミング(5)
Enter(ESC)キーでダイアログが閉じないようにするための設定

2021年4月10日

どもです。
前回、Enterキー/ESCキーでダイアログが閉じられることを回避する方法を記載しました。
しかし、この内容だけでは不十分な点がありました。
なので今回は、この「不足」を補足する内容を記載する。

1.不足していた内容

前回のエントリーでは、キー入力を処理するためのPreTranslateMessage()での処理を記載しました。
しかし、この「PreTranslateMessage()を呼び出す処理」が設定されていません。
この「PreTranslateMessage()を呼び出す処理」の設定方法について書きます。

2.設定方法

それでは、「PreTranslateMessage()を呼び出す処理」の設定方法です。
なお、環境は下記の通りです。

開発環境
CPU i7-8700 CPU 3.20GHz
メモリ 16.0GB
OS Windows 10 Pro
バージョン:1903
IDE Visual StudioCommunity 2019
Version 16.3.9

まず、VisualStudioでクラスビューを表示します。
その中で、「PreTranslateMessage()」を追加したいクラスを選択します。
VisualStudui_001_ClassView
その状態で右クリックして、メニューの中からプロパティを選択します。
(すみません。この画面のスクリーンショットが撮れませんでした。)

表示されたプロパティ画面の中で、「オーバーライド」を選択します。
VisualStudui_002_ClassProperty

下にスクロールすると、「PreTranslateMessage」の行があるので、そこにフォーカスします。
すると、右側にコンボボックスの矢印が表示されるので、それをクリックします。
VisualStudui_003_ClassOverride_001
コンボボックスの選択肢として、「PreTranslateMessage」が表示されるので、これを選択します。
VisualStudui_003_ClassOverride_002
そうすると、対応するダイアログクラスに「PreTranslateMessage」のスケルトンが追記されます。
VisualStudui_004_AddedCode
あとは、追加されたスケルトンに対して、前回のエントリーで紹介したコードを記載していけばOKです。

3.まとめ

今回のエントリでは、キー入力を「横取り」するための関数、イベントハンドラの設定方法について記載しました。
これで、MFCを使ったアプリケーションでもいろいろなキー入力を処理できるようになりました。
さて次は…。

ではっ!