CDialogの標準的な動作では、Enter
キーを[OK]ボタンをクリックし、キーを[ESC
キャンセル]ボタンとして指定します。これらのメッセージは、MFCフレームワーク内のデフォルトのハンドラーで処理されます。これとは異なる動作が必要な場合は、IDOKおよびIDCANCELクリックメッセージハンドラーをオーバーライドする必要があります。
ただし、キーに対する編集ボックスの応答に関する問題Enter
は、それ自体がまったく異なる問題です。Enter
これは、デフォルトの編集ボックスが1行のテキスト入力のみを処理するためのものであり、キーコードに応答しないためです。
複数行入力の編集ボックスを有効にするには、ダイアログエディタで編集ボックスのプロパティMulti-line
とプロパティを設定する必要があります。Want return
OPからの最初のコメントの後の追加情報-----------------
ダイアログのOK
デフォルトの応答ボタンとして設定されているため、ボタンが強調表示されます。Default Button
ダイアログエディタでこのボタンのプロパティのを削除します。ただし、これは視覚的な表示のみであり、OK
作業したいもののためにこのボタンを削除しなければならない場合があります。
ダイアログ出口としてキーを無効Enter
にするには、次のようにバイパスハンドラーを追加する必要があります。
// add a message routing macro entry in the message map
ON_BN_CLICKED(IDOK, OnFilterDefaultExitKey)
// add a function prototype in the {{AFX_MSG() declaration
afx_msg void OnFilterDefaultExitKey();
// add a handler in the class implementation file
/* ==================================== */
void CTest1Dlg::OnFilterDefaultExitKey()
{
// default exit key handler, ignore everything.
}
ただし、この方法でコードを追加すると、OK
キーが完全に役に立たなくなり、クリックにまったく応答しなくなります。Done
したがって、ユーザーによる編集データのファイナライズを処理するには、ボタンを手動で追加する必要があります。
/* ========================== */
void CTest1Dlg::OnButtonDone()
{
EndDialog(IDOK);
}