2016-11-05 91 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。 –

相關問題