游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2256|回复: 3

怎么实现Windows鼠标和DirectInput鼠标位置的同步

[复制链接]

7

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
QQ
发表于 2005-6-21 09:26:00 | 显示全部楼层 |阅读模式
  我想使用DirectInput提供鼠标消息,又想同时使用Window鼠标的指针(如动画光标),但是我发现DirectInputMouse处理的鼠标移动速度和Window鼠标大不相同,使用DirectInputMouse时,如果鼠标的移动速度很慢的话,基本上和Windows鼠标的位置是同步的,但是当我猛的甩一下时,DirectInputMouse的鼠标位置就会落下Windows鼠标一大节,原因可能是DirectInputMouse数据丢失造成的(Buffered模式也是一样)。
  我不到Windows鼠标是怎样获取鼠标数据的,可以做到“分毫”不差。简单一个办法是,使用SetCursorPos()将DirectInputMouse的位置设置到Windows上面,但是这样光标会闪烁的厉害;另一个办法是不使用DirectInput,有没有人知道更好的办法啊?

4

主题

25

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2005-6-22 06:39:00 | 显示全部楼层

Re:怎么实现Windows鼠标和DirectInput鼠标位置的同步

呵呵,解决办法之一是在控制面版的“鼠标”选项里,找到一个叫“提高鼠标精确度”的选项,并且去掉。原因不是DirectInputMouse数据丢失,而是你可能是用的相对模式的鼠标。变成绝对坐标方式就好了。(像CS那样的,虽然看起来是相对的,其实人家用的是绝对模式坐标相减求相对坐标,不像咱们都是相对模式坐标相加求绝对坐标~

7

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
QQ
 楼主| 发表于 2005-6-22 22:15:00 | 显示全部楼层

Re: 怎么实现Windows鼠标和DirectInput鼠标位置的同步

  DirectInput创建的鼠标求绝对坐标,是相对坐标相加得来,主要问题是,如果鼠标移动很慢的话,基本上是同步的,但是猛的甩一下鼠标,两个坐标就相差一段距离了。同样获得的设备数据,Windows做了那些处理呢?

77

主题

203

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
发表于 2005-6-23 15:04:00 | 显示全部楼层

Re:怎么实现Windows鼠标和DirectInput鼠标位置的同步

那相对模式的鼠标如何变成绝对坐标?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 03:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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