很多的程序有使用系统热键的需求,比如:使用热键呼出隐藏程序窗体,或者如QQ、微信打开聊天窗口等等。

【注意事项】

- 注册热键的API返回false时,表示注册热键失败,说明热键已经被其他程序使用。
- 程序退出时,需要注销热键。

【代码参考】

// 注册系统热键的API
RegisterHotKey(ID_HOTKEY_TIMINGEXECUTOR, wxMOD_SHIFT|wxMOD_CONTROL, '1');

// 注销系统热键的API
UnregisterHotKey(ID_HOTKEY_TIMINGEXECUTOR);

 


bool regHotkey()
{
    return RegisterHotKey(ID_HOTKEY_TMEX, m_pPref->m_nHotkey1|m_pPref->m_nHotkey2, m_pPref->m_nHotkey3);
}

if(!regHotkey())
{
    m_pPref->ResetHotkeySetting(wxMOD_ALT, '0');
    bool bAlt0 = regHotkey();

    wxString strTip = _T("Ctrl + Alt + 0");
    bool bShift0 = false;
    if(!bAlt0)
    {
        m_pPref->ResetHotkeySetting(wxMOD_SHIFT, '0');
        bShift0 = regHotkey();
        if(!bShift0)
        {
            wxMessageBox(_("Register HOTKEY failed.") + _T("\n") + 
                _("You can reset HOTKEY setting in Setting dialog."), 
                _("Timing Executor"));
        }
        else
        {
            strTip = _T("Ctrl + Shift + 0");
        }
    }

    if(bAlt0 || bShift0)
        wxMessageBox(_("Register HOTKEY failed.") + _T("\n") + 
            _("HOTKEY restore default setting: ") + strTip + _T("\n") + 
            _("You can reset HOTKEY setting in Setting dialog."), 
            _("Timing Executor"));
}

// end

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐