VC添加全局热键的方法

这个方法靠谱

http://blog.csdn.net/lujianfeiccie2009/article/details/7498704

标签: bufferclass
2012-04-25 17:09 2771人阅读 评论(0) 收藏 举报
 分类:
C/C++(50)  MFC(32) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

全局热键定义 VirtualKey.h 

  1. /************************************************************************/
  2. // VirtualKey.H     By:lujianfei    2009.08.22
  3. // 定义热键
  4. #define IDH_HOT1        4001
  5. #define IDH_HOT2        4002
  6. #define IDH_HOT3        4003
  7. #define IDH_HOT4        4004
  8. #define IDH_HOT5        4005
  9. #define IDH_HOT6        4006
  10. #define IDH_HOT7        4007
  11. #define IDH_HOT8        4008
  12. #define IDH_HOT9        4009
  13. #define IDH_HOT10       4010
  14. #define IDH_HOT11       4011
  15. #define IDH_HOT12       4012

在InitialDialog里面注册自定义的热键

  1. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT1, MOD_CONTROL, 'Q'); //CH$
  2. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT2, MOD_CONTROL, 'W'); //EN$
  3. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT3, MOD_CONTROL, 'E'); //BUSINESS1$
  4. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT4, MOD_CONTROL, 'R'); //BUSINESS2$
  5. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT5, MOD_CONTROL, 'T'); //BUSINESS3$
  6. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT6, MOD_CONTROL, 'Y'); //BUSINESS4$
  7. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT7, MOD_CONTROL, 'U'); //BUSINESS5$
  8. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT8, MOD_CONTROL, 'I'); //BUSINESS6$
  9. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT9, MOD_CONTROL, 'O'); //NUM1$
  10. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT10, MOD_CONTROL, 'P'); //NUM2$
  11. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT11, MOD_CONTROL, 'A'); //NUM3$
  12. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT12, MOD_CONTROL, 'S'); //NUM4$
  13. RegisterHotKey(this->GetSafeHwnd(),IDH_HOT13, MOD_CONTROL, 'D'); //NUM5$

在PreTranslateMessage方法里添加全局热键的事件响应

  1. BOOL CLedControllerDlg::PreTranslateMessage(MSG* pMsg)
  2. {// TODO: Add your specialized code here and/or call the base class
  3. char buffer[20];
  4. if( WM_HOTKEY == pMsg->message )
  5. {
  6. switch(pMsg->wParam)
  7. {
  8. case IDH_HOT1:
  9. strcpy(buffer,"CH$");
  10. break;
  11. case IDH_HOT2:
  12. strcpy(buffer,"EN$");
  13. break;
  14. case IDH_HOT3:
  15. strcpy(buffer,"BUSINESS1$");
  16. break;
  17. case IDH_HOT4:
  18. strcpy(buffer,"BUSINESS2$");
  19. break;
  20. case IDH_HOT5:
  21. strcpy(buffer,"BUSINESS3$");
  22. break;
  23. case IDH_HOT6:
  24. strcpy(buffer,"BUSINESS4$");
  25. break;
  26. case IDH_HOT7:
  27. strcpy(buffer,"BUSINESS5$");
  28. break;
  29. case IDH_HOT8:
  30. strcpy(buffer,"BUSINESS6$");
  31. break;
  32. case IDH_HOT9:
  33. strcpy(buffer,"NUM1$");
  34. break;
  35. case IDH_HOT10:
  36. strcpy(buffer,"NUM2$");
  37. break;
  38. case IDH_HOT11:
  39. strcpy(buffer,"NUM3$");
  40. break;
  41. case IDH_HOT12:
  42. strcpy(buffer,"NUM4$");
  43. break;
  44. case IDH_HOT13:
  45. strcpy(buffer,"NUM5$");
  46. break;
  47. }
  48. }
  49. return CDialog::PreTranslateMessage(pMsg);
  50. }

VC添加全局热键的方法的更多相关文章

  1. c#为程序添加全局热键的方法

    在程序失去焦点或者在后台运行时,可以通过使用全局热键的方式,进行一些快捷的操作,如QQ默认操作中ctrl+alt+A调出截图功能. 在Windows中实现热键功能需要使用win32的Api函数Regi ...

  2. 让程序只运行一个实例(Delphi篇)(三种方法,其中使用全局原子的方法比较有意思)

    Windows 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作.但有时出于某种考虑(比如安全性),我们要 ...

  3. Qt全局热键(windows篇)

      Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对这些进行支持,我们就只能自己写代码,调用系统相关的API了. 注意,这个 ...

  4. Qt全局热键(windows篇)(使用RegisterHotKey和句柄进行注册)

    转载:http://www.cuteqt.com/blog/?p=2088 Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对 ...

  5. Qt5全局热键-QxtGlobalShortcut

    最近做一个项目需要注册全局热键,在网上搜索发现有个第三方库 libqxt 中给出一个比较好的跨平台的解决方案,就是 QxtGlobalShortcut. 但是编译过程中发现这个库用到的QAbstrac ...

  6. Java设置全局热键——第三方包jintellitype实现

    Java原生API并不支持为应用程序设置全局热键.要实现全局热键,需要用JNI方式实现,这就涉及到编写C/C++代码,这对于大多数不熟悉C/C++的javaer来说,有点困难.不过幸好,国外有人已经实 ...

  7. <转>MFC注册系统/全局热键。

    <转>MFC注册系统/全局热键. 1. BEGIN_MESSAGE_MAP(CRS232TESTDlg, CDialog) //{{AFX_MSG_MAP(CRS232TESTDlg) O ...

  8. VC 宏与预处理使用方法总结

    目录(?) C/C++ 预定义宏^ C/C++ 预定义宏用途:诊断与调试输出^ CRT 和 C 标准库中的宏^ NULL 空指针^ limits.h 整数类型常量^ float.h 浮点类型常量^ m ...

  9. VC++添加工具栏

    VC添加工具栏 方法一:添加ICON图标 1. 新建一个基于对话框的项目:Test 2. 在类CTestDlg中, 添加两个变量: CToolBarCtrl m_ToolBar1; CImageLis ...

随机推荐

  1. Android: 一个两点触控的案例

    下面是一个两点触控的案例代码: package com.zzj; import android.app.Activity; import android.os.Bundle; import andro ...

  2. IE input 去掉文本框的叉叉和密码输入框的眼睛图标

    ::-ms-clear, ::-ms-reveal{display: none;}

  3. 使用NSURLProtocol和NSURLSession拦截UIWebView的HTTP请求(包括ajax请求)

    问题:服务器端有一个网站需要AD认证,整站都开了Basic认证,包括图片,CSS等资源,我在HTTP请求头里面添加认证所需的用户名和密码,传递到服务器端可以认证通过.我在UIWebView的shoul ...

  4. XML的二十个热点问题

    这些日子,几乎每个人都在谈论XML (Extensible Markup Language),但是很少有人真正理解其含义.XML的推崇者认为它能够解决所有HTML不能解决的问题,让数据在不同的操作系统 ...

  5. Oracle 12c 多租户配置和修改 CDB 和 PDB 参数

    1. 配置CDB 实例参数,影响CDB与所有 PDB为CDB配置例程参数相对于对于非CDB的数据库是变化不太.ALTER SYSTEM命令用于设置初始化参数,与使用ALTER DATABASE命令修改 ...

  6. mongodb 学习资料

    1 入门 http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html http://www.cnblogs.com/hoo ...

  7. OIer应该知道的二进制知识

    计算机使用\(2\)进制,这是众所周知的.在学习\(OI\)的过程中,\(2\)进制也显得尤为重要.有时候,细节决定成败,所以我想总结一下容易被遗忘和误解的关于\(2\)进制的知识. 1.运算符 &a ...

  8. bzoj 4006 管道连接 —— 斯坦纳树+状压DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4006 用斯坦纳树求出所有关键点的各种连通情况的代价,把这个作为状压(压的是集合选择情况)的初 ...

  9. C#添加修改控件css样式

    一.添加属性 MyStyleSheet.Attributes.Add("href","/css/flostyle.css") 二.改变css样式 if (use ...

  10. ZAB与Paxos算法的联系与区别

    ZAB协议并不是Paxos算法的一个典型实现,在讲解ZAB和Paxos之间的区别之前,我们首先来看下两者的联系. 两者都存在一个类似于Leader进程的角色,由其负责协调多个Follow进程的运行. ...