开发桌面鼠标等程序的时候,不可避免的要用到 鼠标的 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