【问题标题】:Custom Global Hotkey自定义全局热键
【发布时间】:2010-04-04 07:50:12
【问题描述】:

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

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);

ma​​in.cpp

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

此代码运行良好,仅当用户选择单个键并且当他选择多个组合键时不起作用,如 CTRL+F8。

【问题讨论】:

    标签: c winapi global registerhotkey


    【解决方案1】:

    您需要将虚拟键与 wHotKey 值隔离开来:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-21
      • 2016-02-28
      • 2010-12-12
      • 2019-12-07
      • 2016-02-22
      • 2018-05-01
      • 2011-03-15
      • 1970-01-01
      相关资源
      最近更新 更多