今天在写程序时想用一个系统热键,就像QQ一样最小化以后也能照样响应指定的快捷键。尽管我知道VC中肯定有现成的方法,但我毕竟没有实现过,于是研究了一番,很快就找到了解决方法。 使用系统热键可以这么进行,假设我们在 CTestHotkeyDlg 这个类进行热键测试。 A. 首先是注册系统热键 RegisterHotKey BOOL RegisterHotKey(HWND hWnd, int id, UINT fsModifiers, UINT vk); hWnd : 指定响应该热键的窗体 例如在本例中注册一个 Ctrl+Alt+Q 的热键。在 CTestHotkeyDlg特定的地方中调用: B. 接着响应并实现系统热键消息 WM_HOTKEY 添加消息映射 ON_MESSAGE(WM_HOTKEY,OnHotKey) 并实现函数 OnHotKey LRESULT CHotKeyTestDlg::OnHotKey(WPARAM wParam, LPARAM lParam) C. 最后,可别忘了在程序结束时撤销注册的热键 UnRegisterHotKey void CHotKeyTestDlg::OnDestroy() 到此系统热键的工作全部完成。 |
|