我们自己先动手来模仿HGE其键盘特殊按键消息响应,其中所涉及到的数据操作含义稍后再介绍。
首先创建基于对话框CGetKeyBoardTestDlg的程序,创建一个STATIC控件ID为IDC_STATIC_CONTENT在对话框上面。添加成员 unsigned char kbstate[256]; 和int flag;
在CGetKeyBoardTestDlg.h文件头设置宏定义
重载WindowProc()消息
重载WM_TIMER消息
最后在初始对话框的时候
好了,特殊按键消息可以如期执行。
为什么要这样传呢?
因为我们通过GetKeybroadState[虚拟键码] 取得是此按键的位移状态。
在处理按键讯息时,可能需要知道是否按下了位移键(Shift、Ctrl和Alt)或开关键(Caps Lock、Num Lock和Scroll Lock)。通过呼叫GetKeyState函式,也能获得此资讯。例如:
iState = GetKeyState (VK_SHIFT) ;
如果按下了Shift,则iState值为负(即设定了最高位置位元)。如果Caps Lock键打开,则从
iState = GetKeyState (VK_CAPITAL) ;
传回的值低位元被设为1。此位元与键盘上的小灯保持一致。
这样就能解释为分别与0x80,与0x01的原因了。