2011年5月5日

再谈组合键

摘要: 用Hook来捕获键盘消息时,注意字母键a-z或者A-Z,都按大写字母的ASCII码处理。如对Ctrl+v组合键,程序应该如此判断:if (wParam=='V' && GetKeyState (VK_CONTROL) & 0x80) {//Ctrl+v键按下处理}。这样处理,当按下ctrl+v,会两次进入;也就是v键按下和弹起时候都会满足条件。这样需要用到lParam参数,判断其最高位的值,为0表示按下,1表示弹起,为了防止长按ctrl+v键响应多次,我们可以让v键弹起的时候响应一次,代码:if (wParam=='V' &&am 阅读全文

posted @ 2011-05-05 10:21 Ricky.yi 阅读(235) 评论(0) 推荐(0) 编辑

如何处理组合键(转帖)

摘要: 1声明热键消息处理函数原型 在.h中消息映射声明处(AFX_mSG字样之后)加入如下语句: LRESULTOnHotKey(WPARAMwParam,LPARAMlParam); 2.消息与相应处理函数相关联 在.Cpp中加入消息映射宏,使消息与相应处理函数发生关系, ON_MESSAGE(WM_HOTKEY,OnHotKey); 3.为方便以后的操作 预先在类中创建一个响应WM_CREATE和WM_DESTROY消息的函数 OnCreate()与OnDestroy()的框架 4.向系统登记热键 在OnCreate()函数中加入如下代码以向系统登记热键,本例子的热键设为 Ctrl+Shift+ 阅读全文

posted @ 2011-05-05 10:11 Ricky.yi 阅读(257) 评论(0) 推荐(0) 编辑

2011年5月4日

利用#pragma data_seg在进程间共享变量

摘要: #pragma data_seg介绍 用#pragma data_seg建立一个新的数据段并定义共享数据,其具体格式为: #pragma data_seg ("shareddata") HWND sharedwnd=NULL;//共享数据 #pragma data_seg()-----------------------------------------------------------------------------------------------------1,#pragma data_seg()一般用于DLL中。也就是说,在DLL中定义一个共享的,有名字的 阅读全文

posted @ 2011-05-04 15:53 Ricky.yi 阅读(938) 评论(0) 推荐(1) 编辑

导航