MFC涓璳eyboardproc鍑芥暟鎬庝箞浣跨敤
鍦∕FC涓紝鍙互閫氳繃瑕嗙洊CWnd绫荤殑PreTranslateMessage鍑芥暟鏉ヤ娇鐢↘eyboardProc鍑芥暟銆?/p>
棣栧厛锛屽湪浣犵殑绐楀彛绫讳腑澹版槑涓€涓狵eyboardProc鍥炶皟鍑芥暟锛屽涓嬫墍绀猴細
LRESULT CALLBACK MyKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
// 澶勭悊閿洏娑堟伅
// ...
// 濡傛灉闇€瑕佺户缁鐞嗘秷鎭紝鍒欒皟鐢–allNextHookEx鍑芥暟
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
鐒跺悗锛屽湪浣犵殑绐楀彛绫讳腑瑕嗙洊PreTranslateMessage鍑芥暟锛屽涓嬫墍绀猴細
BOOL CMyWindow::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN || pMsg->message == WM_KEYUP)
{
// 璋冪敤KeyboardProc鍑芥暟澶勭悊閿洏娑堟伅
LRESULT result = MyKeyboardProc(pMsg->message, pMsg->wParam, pMsg->lParam);
// 濡傛灉閿洏娑堟伅宸茬粡琚鐞嗭紝杩斿洖TRUE锛涘惁鍒欙紝杩斿洖FALSE
if (result != 0)
return TRUE;
}
// 璋冪敤鍩虹被鐨凱reTranslateMessage鍑芥暟缁х画澶勭悊娑堟伅
return CWnd::PreTranslateMessage(pMsg);
}
鍦ㄤ笂杩颁唬鐮佷腑锛孭reTranslateMessage鍑芥暟涓細灏哤M_KEYDOWN鍜學M_KEYUP娑堟伅浼犻€掔粰浣犲疄鐜扮殑KeyboardProc鍑芥暟杩涜澶勭悊銆傚鏋淜eyboardProc鍑芥暟杩斿洖浜嗛潪闆跺€硷紝琛ㄧず閿洏娑堟伅宸茬粡琚鐞嗭紝PreTranslateMessage鍑芥暟浼氱洿鎺ヨ繑鍥濼RUE锛屼笉鍐嶇户缁紶閫掓秷鎭粰鍏朵粬绐楀彛杩涜澶勭悊锛涘鏋淜eyboardProc鍑芥暟杩斿洖浜嗛浂鍊硷紝PreTranslateMessage鍑芥暟浼氱户缁皟鐢ㄥ熀绫荤殑PreTranslateMessage鍑芥暟缁х画澶勭悊娑堟伅銆?/p>
娉ㄦ剰锛氬湪浣跨敤KeyboardProc鍑芥暟澶勭悊閿洏娑堟伅鏃讹紝闇€瑕侀€氳繃璋冪敤CallNextHookEx鍑芥暟灏嗘秷鎭紶閫掔粰涓嬩竴涓挬瀛愭垨榛樿鐨勫鐞嗗嚱鏁帮紝浠ョ‘淇濆叾浠栫獥鍙h兘澶熸甯稿鐞嗛敭鐩樻秷鎭€?/p>