|
|
dipROPWORD.diph .dwSize =sizeof(DIPROPDWORD); //设置鼠标设备的属性(使用缓冲区读数据)
dipROPWORD.diph .dwHeaderSize =sizeof(DIPROPHEADER);
dipROPWORD.diph .dwObj =0;
dipROPWORD.diph .dwHow =DIPH_DEVICE;
dipROPWORD.dwData =mouse_num;
if(FAILED(mouseiputdevice->SetProperty (DIPROP_BUFFERSIZE,&dipROPWORD.diph )))
ZeroMemory(didievicemousedata,sizeof(didievicemousedata));//每次读鼠标数据,要把鼠标缓冲清0
for(int i=0;i<mouse_num;i++){ //循环读取鼠标数据
if(mouseiputdevice->GetDeviceData (sizeof(DIDEVICEOBJECTDATA),&didievicemousedata,&dwReadNum,0) == DIERR_INPUTLOST && BActive&0x02){//获得用户鼠标
mouseiputdevice->Acquire(); //重新获得设备访问权
return false;
}
if(didievicemousedata.dwOfs==DIMOFS_X){
x+=didievicemousedata.dwData;
}
if(didievicemousedata.dwOfs==DIMOFS_Y){
y+=didievicemousedata.dwData;
}
这样读取如初始时鼠标的客户区坐标为0,0(移动量为0),经过取移动量累加后,发现鼠标重新回到0,0的时候,移动量不为0;
哪位大哥知道怎么解决啊?[em7](而且如果使用自己画的图标,在移动过程中也会出现游戏中的图标和鼠标的位子不重合) |
|