很多的程序有使用系统热键的需求,比如:使用热键呼出隐藏程序窗体,或者如QQ、微信打开聊天窗口等等。
【注意事项】
- 注册热键的API返回false时,表示注册热键失败,说明热键已经被其他程序使用。
- 程序退出时,需要注销热键。
【代码参考】
// 注册系统热键的API RegisterHotKey(ID_HOTKEY_TIMINGEXECUTOR, wxMOD_SHIFT|wxMOD_CONTROL, ‘0‘); // 注销系统热键的API UnregisterHotKey(ID_HOTKEY_TIMINGEXECUTOR);
bool TimingExecuterFrame::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
原文:https://www.cnblogs.com/boomworks/p/14457768.html