Code::使用HotKeyCtrl定义一个系统热键

// 关联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_wVkCode, m_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_hWnd, 111 , m_wModifier, m_wVkCode);
    
}
    
void CXyzDlg::OnHotKey(WPARAM wParam, LPARAM 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();
}

效果图:

 

C++ Code_HotKey的更多相关文章

随机推荐

  1. jQuery 关于ScrollableGridPlugin.js(固定表头)插件的逐步解析

    以前写前台的时候需要用哪些效果从来都是有现成的东西拿来就用的,因为自己真的是有些懒,毫无探索精神,只重视结果,不追求过程. 这个ScrollableGridPlugin.js是从网上找到的一个具有固定 ...

  2. strtok和strtok_r

    1.strtok()函数的用法 函数原型:char *strtok(char *s, const char *delim); Function:分解字符串为一组字符串.s为要分解的字符串,delim为 ...

  3. 数往知来C#面向对象〈三〉

    C# 基础方法篇 一.复习 1)方法的重载 方法的重载并不是一个方法,实际上方法的重载就是一些不同的 方法,目的是为了方便程序员编码,所以将功能相近的方法命名相同 根据参数,编译器自动的去匹配方法体, ...

  4. (转载)OC学习篇之---协议的概念和用法

    在前一篇文章中我们介绍了OC中类的延展,这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Jav ...

  5. 【WPF】ContentControl Style定义与使用出现问题后 -- 引发的思考

    一.背景  使用WPF的朋友,大家都很喜欢采用定义控件的公共样式,以便整个框架对该资源的使用,好处就是可以达到代码复用.系统风格统一等: 1. 定义资源       <Style TargetT ...

  6. EasyUI DataGrid 窗口大小自适用--------------未测试

    EasyUI 新版本里添加了 fit 属性,不需要老版本的那么复杂,重新load DataGrid.但是昨天用的时间发现只有一个DataGrid的时候用fit:true 很好使,但是如果有其它元素,如 ...

  7. Clean Code第二章<命名>

    1.命名要有意义 错误写法 正确写法 2.某些构造函数可以提供有意义的静态方法去实现

  8. C# 多线程参数的使用

    一个参数: Thread.Start方法可以带一个参数: public static void Main() { Thread t = new Thread(new ParameterizedThre ...

  9. 安装CiscoWorks LMS

    安装CiscoWorks LMS,需要安装5张光盘,CiscoWorks LMS的安装步骤比较简单,在这里只介绍需要的重要步骤. 1.安装CD One 将CiscoWorks 2000 LMS CD ...

  10. MSSQL手札三 MSSQL存储过程

    --存储过程完成一段sql代码的封装 create proc trim --参数列表,多个间用逗号分隔 ) as --自定义代码段 ) set @str1=LTRIM(RTRIM(@str)) pri ...