|
|
我是个Direct3D新手,在编小游戏过程中想用DirectInput实现对键盘某键一直按着的检测弄了好久好像是实现了,但总
觉得不妥,想请教一下论坛上的高手。
我是用DirectInput的缓存通过GetDeviceData()来取得从键盘读取的数据,取得数据后我通过
inputKey.wOfs == DIK_W && inputKey.dwData & 0x80(inputKey的声明DIDEVICEOBJECTDATA* inputKey)
来实现对“W”键是否按下检测,我开始以为这样就能实现对是不是一直按着“W”键的检测,但是测试发现当一直按着“W”时它只是按下的时候有反应,后来就没有了,接着我测出了
一直按着“W”时,GetDeviceData(sizeof(DIDEVICEOBJECTDATA),inputKey,&wElements,0)中的wElements除了第一次外都是“0”。
试了好久我后来是在执行 “inputKey.wOfs == DIK_W && inputKey.dwData & 0x80”这个判断和测试后调用了Unacquire()来取消访问权限,这样的话就能实现上面的功能。
虽然我实现了这个功能,但是总感觉到不爽,每次都要取消访问权限感觉怪怪的,不知道高手门是怎么解决这个问题的,希望能指点一下,谢谢! |
|