转载:https://www.zhaokeli.com/article/8288.html
在initwindow中注册热键
1 //生成热键标识,需要保存起来退出时销毁使用 2 int m_HotKeyId = ::GlobalAddAtom("MyHotKey"); 3 //注册热键 4 BOOL re=::RegisterHotKey(m_hWnd,m_HotKeyId,MOD_ALT,VK_F8); 5 DWORD er; 6 if (re == 0) { 7 er=::GetLastError(); 8 }
如果有多个控制符组合就是 | 分隔写48-57对应主键盘上的0-9。65-90对应A-Z 更多虚拟码请参考
https://baike.baidu.com/item/%E8%99%9A%E6%8B%9F%E9%94%AE%E7%A0%81/9884611?fr=aladdin
然后在handlemessage中拦截热键消息 WM_HOTKEY 处理自己的功能
1 //取热键标识,多个热键时区分使用 2 int HotKeyId = wParam; 3 //控制键 4 UINT fuModifiers = ( UINT ) LOWORD(lParam); 5 //虚拟键码 6 UINT uVirtKey = ( UINT ) HIWORD(lParam); 7 if (HotKeyId == m_HotKeyId) { 8 //...处理一些事情 9 }
最后别忘啦退出程序时销毁注册的热键
1 UnregisterHotKey(m_hWnd, m_HotKeyId);