1.获取一个全局标识符
ATOM m_AtomId=NULL;
m_AtomId= GlobalAddAtom("HotKey_{GUID}");
if (m_AtomId==0)
{
    ::MessageBox( NULL, "获取标识符失败!", "提示", MB_OK | MB_ICONINFORMATION );
    return; 
}
 
2.注册热键
//因为GlobalAddAtom返回的值在0xC000-0xFFFF之间,而
//应用程序中要求标识符的值在0X0000-0xBFFF范围内,所以减去0xC000
m_AtomId-=0xC000;
int nErrorCode=RegisterHotKey(m_hWnd,m_AtomId,MOD_CONTROL|MOD_ALT,'K');
if (nErrorCode==0)
{
::MessageBox( NULL, "注册热键Ctrl+Alt+K失败!", "提示",
MB_OK | MB_ICONINFORMATION );
    return;
}

//执行RegisterHotKey后,如果用户按下了热键,系统将发送WM_HOTKEY
//m_hWnd指定的窗体。
 
3.响应WM_HOTKEY消息
·ON_MESSAGE(WM_HOTKEY,OnHotKeyDown)
·afx_msg LRESULT OnHotKeyDown(WPARAM wParam, LPARAM lParam);
·LRESULT CXXXXXDlg::OnHotKeyDown(WPARAM wParam, LPARAM lParam)
{
    DWORD dwModifiersLow=((DWORD)lParam & 0x0000FFFF);
    DWORD dwModifiersHigh=(DWORD)lParam >>16;
 
    if ( (dwModifiersLow==(MOD_CONTROL|MOD_ALT)) && dwModifiersHigh=='K')
    {
        //执行自己需要的操作
    }
    return 0;
}
 
4.退出应用程序时释放资源
UnregisterHotKey(m_hWnd,m_AtomId);
GlobalDeleteAtom(m_AtomId);

本文链接地址: 注册全局热键
https://blog.qingfengju.com/index.asp?id=190

上一篇: 用并口控制BH1415F调频发射芯片
下一篇: 关闭日志的匿名评论功能

分类:Win32/C++ 查看次数:7493 发布时间:2010/1/16 14:04:29