mfc 選單被輸入法攔截

2021-10-14 15:35:37 字數 604 閱讀 5773

響應wm_keydown訊息時發現`~快捷鍵無效,設定斷點發現得到的按鍵訊息根本不是vk_oem_3 192。由於我觀察到輸入法是開啟的,於是關閉輸入法後再試,成功了。繼續觀察發現,開啟輸入法時,按下的可能被輸入法截獲的鍵全都變成了vk_processkey 229。

可能被截獲的鍵應該包括標點符號(因為有中英文標點之分)、a~z字母(打字)等等,而方向鍵、ctrl\alt鍵等則不會被截獲,能被正確識別。

搜尋相關資料,有兩種解決辦法。第一種是在程式開始執行時關閉輸入法,用immdisableime(0)這個函式,具體使用請查閱msdn;第二種解決辦法是在pretranslatemessage中對鍵碼還原。

// cmainframe 訊息處理程式

bool cmainframe::pretranslatemessage(msg* pmsg)

return cframewnd::pretranslatemessage(pmsg);

}使用時記得在mainframe.cpp中新增

#include "imm.h"

#pragma comment(lib, "imm32.lib")

引用:

底部選單被輸入法頂上去的解決方案

遇到幾次這種問題了,之前一直沒寫處理方法,導致每次遇見都要花很多時間找解決方案。只有android系統會出現這個問題,為了以後能夠快速解決問題,還是記錄一下吧。底部選單被輸入法頂上去的解決方案 一 最開始頁面結構是醬紫的,如圖 二 展示下問題 三 解決後 來說說解決方案吧 login footer ...

MFC隱藏顯示工作列,選單欄及輸入法面板

1 隱藏 隱藏命令欄 hwnd hwnd shfindmenubar m hwnd commandbar show hwnd,false 隱藏工作列 shfullscreen m hwnd,shfs hidetaskbar shfs hidesipbutton shfs hidestarticon ...

輸入法控制

unit u ime inte ce implementation uses windows,forms,imm,sysutils,messages varstmpclassname,stmpime string 失去焦點時的控制項名稱和輸入法名稱 msghandle hhook 0 判斷當前類名是...