2016-11-05 8 views
0

私は、ハードウェアI/Oのコマンドを送るためのボタンを備えたCFormViewダイアログを持っています。 私は誤って入力キーをクリックすると、コマンドが実行されます。 (最後のボタン1、フォーカスがあります)。ボタンのEnterキーを防ぐ方法

これを正しい方法でどのように解決しますか?

答えて

0

PreTranslateMessageを使用する方法はありません。 WM_KEYDOWNおよびVK_ENTERの場合はCHECKです。それを無視するか、何でもしてください。

背景:CFormView :: PreTranslateMessageは後でPreTranslateInputを呼び出し、最後にIsDialogMessageを呼び出し、この関数はEnterキーを変換して既定のダイアログボタンを実行します。

+0

CEditコントロールもあります。このソリューションは既存のCEditコントロールに影響はありませんか? –

+1

どのコントロールにフォーカスがあるか自由に確認してください。ボタン上で単にそれを無視してください。より詳細には、フォーカスを持っているウィンドウのウィンドウクラスのタイプをチェックして、メッセージを無視するか、または処理させます。 PreTranslateMessageがVK_ENTERを取得した場合、エディットコントロール内の反応は、それが返すダイアログコードに依存します。 – xMRi

+0

Thx、それが動作します。 Unfortunatelly私はまだ(Afx)MessageBoxesに問題があります。ユーザーは誤ってキーを押してそれをクリックすることができます。私は、上記のPreTranslateMessageで私自身のMessageBoxesを書く必要があると思います。 –

関連する問題