首页 > 代码库 > C++ Code_HotKey

C++ Code_HotKey

 
 
 
 

Code::使用HotKeyCtrl定义一个系统热键  <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

  

// 关联HotKeyCtrl控件变量 m_HotKey1
 
 
 
BEGIN_MESSAGE_MAP(CXyzDlg, CDialog)
    //{{AFX_MSG_MAP(CXyzDlg)
    ON_WM_SYSCOMMAND()
    ON_MESSAGE(WM_HOTKEY,OnHotKey)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
    ON_WM_CLOSE()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()
    
void CXyzDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    
    WORD m_wVkCode;
    WORD m_wModifier;
    m_HotKey1.GetHotKey(m_wVkCodem_wModifier);
    
    AfxGetMainWnd()->SendMessage(WM_SETHOTKEY,(WPARAM)MAKEWORD(m_wVkCode,m_wModifier));
    UINT mod = 0;
    if ( m_wModifier&HOTKEYF_ALT )     mod|=MOD_ALT;
    if ( m_wModifier&HOTKEYF_CONTROL ) mod|=MOD_CONTROL;
    if ( m_wModifier&HOTKEYF_SHIFT )   mod|=MOD_SHIFT;
    if ( m_wModifier&HOTKEYF_EXT )     mod|=MOD_WIN;
    
    m_wModifier=mod;
    ::RegisterHotKey(AfxGetMainWnd()->m_hWnd111 , m_wModifierm_wVkCode);
    
}
    
void CXyzDlg::OnHotKey(WPARAM wParamLPARAM lParam)
{
    switch (wParam)
    case 111:
        AfxMessageBox("热键响应成功!");
//    CDialog::OnHotKey(wParam,lParam);
}
    
void CXyzDlg::OnClose() 
{
    // TODO: Add your message handler code here and/or call default
    ::UnregisterHotKey(m_hWnd,111);
    CDialog::OnClose();
}

 

效果图:

 


来自为知笔记(Wiz)