2016-11-05 92 views
0

我有一个带有按钮的CFormView对话框来发送硬件I/O命令。 我用户不小心点击了回车键,命令就执行了。 (最后一个按钮,有焦点)。如何防止按键上的ENTER键

你如何以正确的方式解决这个问题?

回答

0

方法是使用PreTranslateMessage。 CHeck为WM_KEYDOWN和VK_ENTER。忽略它或做任何你想做的事情。

背景:CFormView :: PreTranslateMessage稍后调用PreTranslateInput,最后调用IsDialogMessage,此函数将Enter键转换为执行默认对话框按钮。

+0

也有CEdit控件。这个解决方案对现有的CEdit控件是免费的吗? –

+1

随时检查哪个控件具有焦点。在一个按钮上简单地忽略它。更详细地说,您可以检查具有焦点的窗口的窗口类类型,并忽略该消息或让其处理。如果PreTranslateMessage获得VK_ENTER,则编辑控件中的反应取决于它发回的对话代码... – xMRi

+0

Thx,即有效。不幸的是,我仍然有(Afx)MessageBoxes的问题。用户也可以用Enter键不小心点击它。我想我必须用提到的PreTranslateMessage编写我自己的MessageBoxes。 –

相关问题