键盘 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
为啥 UpdateData() 在 MFC CEdit 控件的 EN_CHANGE 处理程序中不起作用
UITextField becomeFirstResponder 在 UIControlEventEditingDidEndOnExit 中不起作用