键盘 Enter 键在 MFC 对话框中不起作用?

Posted

技术标签:

【中文标题】键盘 Enter 键在 MFC 对话框中不起作用?【英文标题】:Keyboard Enter key not working in MFC Dialog Box? 【发布时间】:2010-11-18 12:10:36 【问题描述】:

键盘 Enter 键在 MFC 对话框中不起作用? 当我输入用户名和密码并按 Enter 键时,我有一个 MFC 登录对话框,当我使用鼠标单击登录时,该对话框关闭。

我需要做什么才能在 MFC 中使键盘键工作?

【问题讨论】:

Enter 键被转换为 IDOK。当您按下该键时,它类似于单击“确定”按钮。通常调用 OnOK()。可能这有助于将 Enter 删除为“活动”键。 @harper : 我已经从 MFC 对话框中删除了 OK 按钮,因为我不需要它。 【参考方案1】:

实现OnOK() 和/或OnCancel() 方法,不要在那里调用基本方法。 (这些是您可以简单地重载的虚拟方法)。

仅仅因为您移除了按钮并不意味着您不必处理这些事件! OnOK()Enter 键触发,OnCancel()Escape 键触发。

【讨论】:

问题是我删除了确定和取消按钮,因为我不需要它们我在我的对话框中放置了一个登录和关闭按钮,但我在登录按钮顶部放置了一个我需要的图像为按钮设置 Ownerdraw 属性 = true 以将登录图像与按钮合并,当我这样做时,默认按钮属性变为登录按钮的 false。 那么为什么默认按钮属性会变成false呢?这听起来像是我的问题。【参考方案2】:

在这种情况下,在您的数据库的 pretranslate() 方法中处理 enter 键。

【讨论】:

现在我正在使用这样的 pretranslate() 方法:BOOL CNDSConnectDlg::PreTranslateMessage(MSG* pMsg) 基类 if(pMsg->message==WM_KEYDOWN) if(pMsg->wParam= =VK_RETURN || pMsg->wParam==VK_ESCAPE) pMsg->wParam=NULL ; 返回 CDialog::PreTranslateMessage(pMsg);现在,当我按下回车时,窗口不会关闭,但现在我想在按下回车时调用登录方法,当我每次调用我的登录方法时都将它放在 pretransalte() 中。【参考方案3】:

转到资源视图并确保在加速器中没有 VK_RETURN 条目且没有修饰符。这也可能是一个原因。

【讨论】:

以上是关于键盘 Enter 键在 MFC 对话框中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

返回键在 UIAlertView 上的 UITextField 中不起作用 .. SIGSEGV

为啥软键盘在对话框片段内的 Web 视图中不起作用?

为啥 UpdateData() 在 MFC CEdit 控件的 EN_CHANGE 处理程序中不起作用

UITextField becomeFirstResponder 在 UIControlEventEditingDidEndOnExit 中不起作用

shift+enter 在 textarea 中不起作用

SetWindowDisplayAffinity 在 MFC 窗口中不起作用