游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1619|回复: 0

求助!DirectInput存在的鼠标移动量误差怎么解决

[复制链接]

2

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-3-27 12:58:00 | 显示全部楼层 |阅读模式
        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](而且如果使用自己画的图标,在移动过程中也会出现游戏中的图标和鼠标的位子不重合)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-20 00:40

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表