【BCB 原创】深入 分析 C++Builder 6 的鼠标 单击 双击 事件 关键词: 单击 双击 实现机制

C++Builder开发中,遇到鼠标单击和双击事件处理异常,尤其是在双击事件中,由于C++Builder独特的事件顺序导致预期效果无法实现。正常情况下,双击事件应在第二次点击的down事件之后触发,但C++Builder却在第二次down之前就触发了,这给编程带来困扰。解决办法是引入额外的全局变量IsDoubleClick来辅助判断。
摘要由CSDN通过智能技术生成

   开发桌面鼠标等程序的时候,不可避免的要用到 鼠标的 down up click(单击) doubleClick(双击事件) 的交替使用,使用C++builder开发的程序员也许会遇到很多莫名的错误,觉得不可思议。

   同样的,在开发QQ截屏软件的时候我也遇到了,那就是我双击了一个form,引发了双击事件,但是鼠标 的down和up事件又会影响doubleclick事件里的某个全局量,

  比如

  在down事件里面把一个boolean变量 a置为0;

  在up事件里把a置为1;

  在doubleclick事件里把a置为1;

 我的期待是:双击之后 a=1;

 可是不管我怎么修改,最终的a结果还是0;

 郁闷了我好一会···

 后来我跟踪记录了调用的事件顺序,发现了一个C++Builder的一个bug:

 我们知道,一个Click事件的调用顺序是:(对单击的处理顺序各个编译器应该都是一样的)

 down事件 click事件 up事件

 可想而知,DoubleCilck事件的调用顺序:  (DoubleClick事件的实现:两次单击事件在一定间隔内发生,所定义的doubleclick事件为第二次单击产生的事件)

 down事件 click事件 up事件 down事件 DoubleClick事件 up事件

 确实,大部分编译器VC,VS等都是如此的。

 已上是Microsoft公司产品对doubleclick的处理机制&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值