VC++热键注册 易语言注册全局热键

这两天编程进行热键注册时,遇到了一些问题,把它总结了一下,希望能为学习VC的人提供一点参考。一、热键注册的步骤1、热键消息处理函数的声明在头文件中加入如下代码:afx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);2、添加消息映射BEGIN_MESSAGE_MAP(CWndSnapDlg, CDialog)
......
ON_MESSAGE(WM_HOTKEY,OnHotKey) //手动加入
END_MESSAGE_MAP()3、消息处理函数的实现LRESULT CWndSnapDlg::OnHotKey(WPARAM wParam,LPARAMlParam)
{//wParam是注册热键的ID,lParam是关于按键的信息
if(wParam==1000)
{
VC++热键注册 易语言注册全局热键
.........}......
return0;
}4、在初始化时进行热键注册注册热键的函数原型如下:
BOOL RegisterHotKey(  HWND hWnd,         // handle to window  int id,            // hot key identifier  UINT fsModifiers,  // key-modifier options  UINT vk            // virtual-key code);
例如要注册热键Ctrl+Shift+A,则注册代码如下:
RegisterHotKey(m_hWnd,1000,MOD_CONTROL | MOD_SHIFT,'A');
5、热键的注销
在程序退出之前要记着注销这些注册热键,注销热键的函数如下:
BOOL UnregisterHotKey(  HWND hWnd,  // handle to window  int id      // hot key identifier);
则注销上面注册的热键Ctrl+Shift+A的代码为:
UnregisterHotKey(m_hWnd,1000);
二、需要注意的问题
1、我一开始编这个程序的时候,每次按下Ctrl+Shift+A时,消息处理函数OnHotKey(WPARAM wParam,LPARAM lParam)确实被调用了,但是wParam和lParam两个参数传进来的值却总是不对,后来才发现,是我在声明消息处理函数时,在函数前面加上了CALLBACK这个调用约定。所以,一定要注意,千万不要加调用约定修饰。
2、我看很多资料都说如果注册热键Ctrl+Shift+A和Ctrl+Shift+a的话,只要在上面的基础上多加一个注册函数即可:
RegisterHotKey(m_hWnd,2000,MOD_CONTROL | MOD_SHIFT,'a');
但是我在调试的时候发现,不管按下的是Ctrl+Shift+A还是Ctrl+Shift+a,消息处理函数传入的wParam这个参数始终是1000,而且,当我把注册Ctrl+Shift+a的代码删掉时,现象和以前一样。经过不断的调试,我发现,只要注册了包含大写字母的热键后,在运行时按下小写字母的按钮时同样实现按下大写字母时的功能,而且,注册时必须注册大写字母,如果只注册包含小写字母的热键是没有用的。

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/243562.html

更多阅读

易语言进度条源码 精易论坛

易语言进度条源码——简介今天,我给大家带来如何弄进度条!易语言进度条源码——工具/原料电脑易语言易语言进度条源码——方法/步骤易语言进度条源码 1、打开易语言!拉

语言江湖 易语言

如果有人对你说,我们的日常用语中有许多是“江湖黑话”,你肯定会大吃一惊。但这的确是事实。在社会生活中,有一些我们不懂或者感觉神秘的“语言”和“文字”,比如符号、图语、咒语、占卜语、人体语、江湖语……但是,当我们了解了它们的起

英语谚语的语言特征及翻译方法 易语言特征码

周影韶摘要:谚语是语言的核心和精华,是人类文明的积淀,也是人民群众智慧的结晶。本文探讨了英语谚语的主要语言特征及翻译方法,旨在加深对英汉谚语的理解,更好地欣赏和使用它们。英汉谚语都是富于色彩的语言形式,一般具有形象生动、简炼概

声明:《VC++热键注册 易语言注册全局热键》为网友活得潇洒一点分享!如侵犯到您的合法权益请联系我们删除