请教一个按键的问题
用VK_UP可以向上走(北方),按VK_LEFT可以向左走(西方),我想同时按VK_UP&&VK_LEFT向上方和左方也就是西北方走的话,应该怎么判断? 问题点数:20、回复次数:5Top
1 楼longlijun(风之力)回复于 2005-04-03 09:08:21 得分 0
switch (nChar)
{
case VK_LEFT:
if((1 << 15) & GetAsyncKeyState(VK_UP))
{
CClientDC dc(this);
dc.TextOut(0, 0, "press");
}
break;
}Top
2 楼z3254a(疯狂++)回复于 2005-04-03 09:41:26 得分 0
请问(1 << 15)
CClientDC dc(this);
dc.TextOut(0, 0, "press");
是什么意思呢?
我可不可以用
case VK_LEFT&&VK_UP:
..........
我能不能用这种方法呢?比如说cos或sin?
Top
3 楼longlijun(风之力)回复于 2005-04-03 09:57:01 得分 0
不能用 case VK_LEFT&&VK_UP:
CClientDC dc(this);
dc.TextOut(0, 0, "press");---------------这两句我只是让你用来测试的,当你按下left+ up 时
窗口上显示“PRESS"
如果你不需要它, 可以改成你的代码, 你想left + up时做什么, 就在中间填什么代码?
上述代码有限制, 应先按UP, 再按LEFT,
如果在case VK_UP中,也加入类似代码,就没顺序限制了Top
4 楼z3254a(疯狂++)回复于 2005-04-03 10:40:41 得分 0
请问(1 << 15)是什么意思呢?l是数字1还是字母l呢?
如果是数字1的话我想是不是指,按LEFT的时候如果同时按UP,那么物体在原来15的基础上向左移1?(向负方向)
Top
5 楼longlijun(风之力)回复于 2005-04-03 10:54:31 得分 20
((1 << 15) & GetAsyncKeyState(VK_UP)
呵呵, 不那样理解的,
上面整个表达式, 判断是否按下的UP键
case VK_LEFT: 检测否按下LEFT键
if((1 << 15) & GetAsyncKeyState(VK_UP))判断是否按下的UP键
然后,放上你的走西北方的程序代码,
同时按UP、LEFT向上方和左方也就是西北方走
1 << 15 是个位移运算, 将1位15位后与函数的结果做位与运算
看不懂,可暂不看, 照搬! :)
Top




