游戏开发论坛

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

请教高手一个不算难的问题。怎么检测鼠标健松开事件

[复制链接]

3

主题

6

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2006-3-7 18:21:00 | 显示全部楼层 |阅读模式
     请教高手一个不算难的问题。怎么检测鼠标健松开事件

我说的不是在窗口的那个MouseUp事件。
在DirectX 的DXinput 鼠标事件中只有 ”是否按下“这一个,没有松开的事件。其实就是Press事件。这个问题我搞难很长时间也没搞好。
不知道有什么api可以检测。我找到的一个,MSDN 说只有在2000以上的系统才有效。

我不想用窗体的那个MouseUp vb的事件反应慢,vb中一秒钟最多响应17次事件。我在做游戏中,有时如果绘图消耗了CUP,可能会漏掉事件。
希望有高手帮帮忙。谢谢了

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2006-3-8 10:38:00 | 显示全部楼层

Re:请教高手一个不算难的问题。怎么检测鼠标健松开事件

既然能够检测是否处于按下状态,难道还不能判断松开吗?
按下的时候设置Flag为True,弹起设为False,True-->False表示松开鼠标

3

主题

6

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2006-3-8 11:48:00 | 显示全部楼层

Re:请教高手一个不算难的问题。怎么检测鼠标健松开事件

我说的说鼠标弹起事件。,就说鼠标键松开的一刻发生的事件。这个和鼠标的状态不是一回事。

在DxInput 中,如果设置只检测一次鼠标状态。比方你按下鼠标左键,不管你马上松,还松按着不动,系统都认为只发生一次鼠标按下,就在按下时候发生。 没有函数告诉你,什么时候你松开了左键。
    设置检测连续鼠标状态,那么你松开鼠标左键,还要等一个延时,比如 20-150毫秒等,(和你设置的灵敏度有关),才能得到鼠标flag=False 的信息。所以也没有办法检测鼠标松开事件。

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-3-8 23:11:00 | 显示全部楼层

Re:请教高手一个不算难的问题。怎么检测鼠标健松开事件

至少我不知道vb还有其他自带的这种事件,不过可以自己写:

我一般另开个线程用循环先检测鼠标状态,用GetAsyncKeyState这个API函数,然后定义一个Event,然后到检测到鼠标状态改变就raise这个event

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 21:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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