现在的位置: 首页 > 综合 > 正文

处理系统热键,用全局原子||http://topic.csdn.net/u/20080909/11/97475de4-afd5-4be0-8756-3e586fcf6436.html

2013年09月23日 ⁄ 综合 ⁄ 共 811字 ⁄ 字号 评论关闭
头文件内定义:ATOM  m_nHotKeyID_Q;

void COneDlg::RegSysHotkey()//加载全局原子

    BOOL m_isKeyRegistered; 
    HWND hWnd = this->m_hWnd;// 获取当前窗口句柄  

    // 寻找HotKey对应的原子是否存在于原子列表 
    //Alt + Q  用此热键设置你想要的操作,例如退出图片预览
 
    if(GlobalFindAtom("strHotKeyQuit") == 0)//返回0说明未注册此键 
    { 
        m_nHotKeyID_Q = GlobalAddAtom("strHotKeyShow");//把strHotKeyShow加入原子列表 
        m_isKeyRegistered = RegisterHotKey(hWnd, m_nHotKeyID_Q, MOD_ALT, 'Q'); //设置组合按键

        ASSERT(m_isKeyRegistered != FALSE); 
    } 
    else 
    { 
        AfxMessageBox("热键 Alt + Q 已经存在!"); 
        PostQuitMessage(0); 
    }
}

void COneDlg::DelSysHotkey()//卸载全局原子,否则会一直占用

    HWND hWnd = this->m_hWnd; 
    BOOL m_iskeyUnregistered;
    //Alt + Q 
    m_iskeyUnregistered = UnregisterHotKey(hWnd, m_nHotKeyID_Q); //卸载 m_nHotKeyID_Q
    ASSERT(m_iskeyUnregistered); //判断错误
    GlobalDeleteAtom(m_nHotKeyID_Q);

}

抱歉!评论已关闭.