CDialog 的标准行为是将Enter
键指定为单击确定按钮,将ESC
键指定为取消按钮,这些消息在 MFC 框架内的默认处理程序中处理。如果您想要与此不同的行为,则必须覆盖 IDOK 和 IDCANCEL 单击消息处理程序。
但是,您对键的编辑框响应的Enter
问题本身就是一个完全不同的问题。这是因为默认的编辑框只用于处理单行文本输入,不响应Enter
键码。
要启用多行输入的编辑框,您必须在对话框编辑器中设置编辑框的Multi-line
andWant 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);
}