鼠标左击确触发了OnMouseMove事件,想知道可能的原因

把事情简化了下,大概可以这样说. 别人写了个功能,就是鼠标按下以后拖拉的时候把选择的范围用虚线框表示出来. 当这个范围小于100*100像素的时候就默认画出个100*100的虚线框. 做法基本就是在OnLButtonDown的时候设置一个标志. 然后在OnMouseMove的时候先确认下标志,然后画框. (这个说的可能不够清楚,但反正问题的重点不在这里) 现在遇到的问题是,只要鼠标左键一按下就立刻画出了一个100*100的虚线框.(鼠标并没有移动) 断点调试以后发现,在OnLButtonDown函数走完了以后,莫名其妙地进入了OnMouseMove函数,所以一点下框就被画出来了. 程序里并没有查到什么故意做了这种特殊处理的地方. 望达人能给点线索,有哪些可能性会造成这种状况? 另:即使调试的时候我也是用F5,F10,F11走的,并没有移动过鼠标.

第1个回答  2019-08-22
这个肯定是程序的问题。
你不是说了吗,当这个范围小于100*100像素的时候就默认画出个100*100的虚线框.
我估计就是基于这个条件,当判断鼠标位置时,发现这个范围小于100*100,就用了SetCursorPos等函数调整鼠标位置,结果就产生了mouse
move消息。
修正的办法是在释放鼠标时才判断这个范围的大小。
第2个回答  2019-08-27
你是指设定鼠标指针速度高还是移动得快?
如果是第一种
可以用api函数得到鼠标移动的速度
在事件里判断是否过高
则不执行事件里的处理.
第二种...也许有
但我没办法.

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网