WM_KEYDOWN消息中如何判断多个按键
编号:QA002779
建立日期: 2000年3月30日 最后修改日期:2003年7月27日
所属类别:
Q
Old:
操作系统:Win95OSR2
编程工具:VC6
问题:用ClassWizard生成的WM_KEYDOWN消息响应函数只能响应单个方向键按下的情况。但无法实现按下上、左就实现左45度的功能。请问怎样解决?
A回答:
在接受到WM_KEYDOWN消息的同时,调用GetAsyncKeyState(int vKey)来判断其他方向键的状态,vKey可以为VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT等等。
袁波的意见:
BOOL CMonDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message== WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case KEY_UP_PRESSED:
keystatus&= UP;
breake;
case KEY_DOWN_PRESSED:
keystatus&= DOWN;
breake;
case KEY_LEFT_PRESSED:
keystatus&= LEFT;
breake;
case KEY_RIGHT_PRESSED:
keystatus&= RIGHT;
breake;
default:
break;
}
}
else if(pMsg->message== WM_KEYUP)
{
case KEY_UP_PRESSED:
keystatus&= UP_RELEASED ;
breake;
case KEY_DOWN_PRESSED:
keystatus&= DOWN_RELEASED ;
breake;
case KEY_LEFT_PRESSED:
keystatus&= LEFT_RELEASED ;
breake;
case KEY_RIGHT_PRESSED:
keystatus&= RIGHT_RELEASED ;
breake;
default:
break;
}
................
switch(keystatus )
{
case DIR_UP:
UP_PROCESS;
breake;
case DIR_LEFT:
LEFT_PROCESS;
breake;
case DIR_UP_LEFT:
UP_LEFT_PROCESS;
breake;
.
.
.
.
.
.
default:
break;
}
.............................
}
此问题由wulin回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 键盘与鼠标, mouse, keyboard, hid。
| |
|
|
| |
|
|