2010-04-04 133 views
1

我正在尝试为我的应用程序获取用户定义的全局热键。这里是我的应用程序代码,自定义全局热键

user.rc

CONTROL   "", IDC_MHOTKEY, HOTKEY_CLASS, WS_TABSTOP, 91, 86, 68, 14 

function.cpp

WORD wHotKey = SendDlgItemMessage(hwnd, IDC_MHOTKEY, HKM_GETHOTKEY, 0, 0); 
    GLOBAL_HOTKEY= wHotKey; 
    RegisterHotKey (NULL, TURN_OFF_HOTKEY, HIBYTE(LOWORD(wHotKey)) , wHotKey); 

的main.cpp

if (messages.message == WM_HOTKEY && (HIWORD (messages.lParam) == GLOBAL_HOTKEY)) 
         alert("Coming only for Single Key"); 

此代码运行良好,只有当用户选择一个键时,如果他选择多个键(如CTRL + F8)组合,则该键不工作。

回答

1

您需要的虚拟键分离出来的wHotKey值:

RegisterHotKey (NULL, 
    TURN_OFF_HOTKEY, 
    HIBYTE(LOWORD(wHotKey)),   // Modifiers 
    LOBYTE(LOWORD(wHotKey))   // Virtual key 
); 
+0

这是很酷;)终于解决了问题!谢谢Nobugz :) – ukanth 2010-04-04 13:54:50