消息 类 五山 含义 LWM_KEYDOWN非系统。按下了非系统键消息 WM KEYUP 非系统 松开了非系统键消息 WM SYSKEYDOWN系统 按下了系统键消息 WM SYSKEYUP系统 松开了系统键消息 包含了识别按下 的键的虚键码 wParam 按键消息的 两个变量 重复计数位(0~15位) Param<OEM扫描码(16~23位) 扩展键标志(24位) 保留位(25~28位) 关联码(29位) 32位的变量 键的先前状态(位30) 转换状态(31位)
消息 类型 含义 WM_KEYDOWN 非系统 按下了非系统键消息 WM_KEYUP 非系统 松开了非系统键消息 WM_SYSKEYDOWN 系统 按下了系统键消息 WM_SYSKEYUP 系统 松开了系统键消息 按键消息的 两个变量 wParam lParam 32位的变量 重复计数位(0~15位) OEM扫描码(16~23位) 扩展键标志(24位) 保留位(25~28位) 关联码(29位) 键的先前状态(位30) 转换状态(31位) 包含了识别按下 的键的虚键码
在 WinMain函数的消息循环中包含了 TranslateMessage函数, 其功能是把按键消息转化为字符消息,但只有当键盘驱动程序把键 盘字符映射成ASCⅢ码后才能产生 WM CHAR消息 WM SYSKEYDOWNX WM SYSKEYUP 按键消息只能产生系统消息 字符消息系统 非系统 WM KEYDOWN和 WM KEYUP 的按键消息只能产生非系统消息 消丸 关型 WM CHAR 非系统 非系统 WM DEADCHAR 非系統非系統死享符 WM SYSCHAR 系统 系统 WM SYSDEADCHAR系統 系统死等
在WinMain函数的消息循环中包含了TranslateMessage函数, 其功能是把按键消息转化为字符消息,但只有当键盘驱动程序把键 盘字符映射成ASCII码后才能产生WM_CHAR消息 消 息 类 型 含 义 WM_CHAR 非系统 非系统字符 WM_DEADCHAR 非系统 非系统死字符 WM_SYSCHAR 系 统 系统字符 WM_SYSDEADCHAR 系 统 系统死字符 字符消息 系统 非系统 WM_KEYDOWN和WM_KEYUP 的按键消息只能产生非系统消息 WM_SYSKEYDOWN和WM_SYSKEYUP 按键消息只能产生系统消息
【6-1】设计一个窗口,在该窗口中练习键盘的响应,要求如下: 1)单击键盘上的向上箭头时,窗口中显示“ You had hitted the up key (2)单击< Shift>键时,窗口中显示“ You had hitted the shift key” (3)单击<Ctr>键时,窗口中显示“ You had hitted the ctrl key” (4)单击<CtrH+A>键时,窗口中显示“ You had hitted the ctrl a key” (5)单击<Shif+B>键时,窗口中显示“ You had hitted the shift b key' 键盘实例程序 You had hitted the SHIFT B key
【6-1】 设计一个窗口,在该窗口中练习键盘的响应,要求如下: (1) 单击键盘上的向上箭头时,窗口中显示“You had hitted the up key” (2) 单击<Shift>键时,窗口中显示“You had hitted the SHIFT key” (3) 单击<Ctrl>键时,窗口中显示“You had hitted the CTRL key” (4) 单击<Ctrl+A>键时,窗口中显示“You had hitted the CTRL A key” (5) 单击<Shift+B>键时,窗口中显示“You had hitted the SHIFT B key
long wInaPlWndProc(HWND hwnd, UINT IMessage, UINT wParam, LONG IParam) RHDC hDC; ∥定义设备环境句柄 PAINTSTRUCT PS; ∥定义包含绘图信息的结构体变量 hEN Pen: ∥定义画笔句柄。 HBRUSHhBrush ∥定义画刷句柄 ∥以下定义输出的字符串。 static char cUp="You had hitted the Up key"; static char cctrll="You had hitted the ctrl key" static char cShift[="You had hitted the shift key" static char cCtrl All=You had hitted the ctrla key; static char cShift Bl=You had hitted the shift b key 下面定义并初始化按键标志变量。 static BOoLnUpkeyDown=FALSE nShiftKeyDown=FALSE, n Down=FALSE, nCtrlAKeyDown=FALSE nShiftBKeydown=FALSE
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam) {HDC hDC; //定义设备环境句柄. PAINTSTRUCT ps; //定义包含绘图信息的结构体变量 HPEN hPen; //定义画笔句柄。 HBRUSH hBrush; //定义画刷句柄 //以下定义输出的字符串。 static char cUp[]="You had hitted the UP key"; static char cCtrl[]="You had hitted the Ctrl key"; static char cShift[]="You had hitted the SHIFT key"; static char cCtrl_A[]="You had hitted the CTRL A key"; static char cShift_B[]="You had hitted the SHIFT B key"; //下面定义并初始化按键标志变量。 static BOOL nUpKeyDown=FALSE, nShiftKeyDown=FALSE, nCtrlKeyDown=FALSE, nCtrlAKeyDown=FALSE, nShiftBKeyDown=FALSE;
switch(iMessage) i case WM KEYdoWn: i switch(wParam) i case vK UP: ∥当按上箭头键时,变量置为真 nUpKeyDown= tRUE: break case vK shift: ∥按shif键时,变量置为真 nShiftKeyDown- TRUE; break; case VK CONTRol ∥按 control键时,变量置为真 nCtrlKeyDown=TRUE; break; default: breaks break: case WM KEYUP. Invalidaterect(hWnd, NULL, FALSE); break;
switch(iMessage) { case WM_KEYDOWN: { switch(wParam) { case VK_UP: //当按上箭头键时,变量置为真。 nUpKeyDown = TRUE; break; case VK_SHIFT: //当按shift键时,变量置为真。 nShiftKeyDown = TRUE; break; case VK_CONTROL: //当按control键时,变量置为真 nCtrlKeyDown = TRUE; break; default: break; } } break; case WM_KEYUP: InvalidateRect(hWnd,NULL,FALSE); break;