|
|
最近做了个飞机射击类游戏,感觉在控制上有点问题。现在我希望在我按下方向键的同时------不松开方向键----我按下了空格键来FIRE!如果用DirectInput 的立即数据模式的话,显然无法同时读取这个信息。
于是我研究了下缓冲数据模式。但是发现我的《WINDOWS游戏编程》上讲的很模糊。我上网去找资料,似乎都讲的比较模糊。
只好自己动手写程序来研究。
一般的情况,先
hr=lpdiKeyboard->GetDeviceData(sizeof(DIDEVICEOBJECTDATA),didod,&dwElements,0);
然后是保证其执行正确,最后
for(int i=0 ; i<dwElements;i++)
{
if(didod.dwData & 0x80) {
//这里didod.dwOfs 就是那个被按下的键。缓冲区大小为16
}
}
但是经过我测试,每次调用完GetDevicData 后,dwElements 的值都是 1 。
即使我同时按下两个键,它还是 1。
这个读取到底该怎么去做? |
|