当前位置:编程学习 > VB >>

经验共享:关于诡异的托盘鼠标事件

今天偶而翻看以前的程序,想给其中一个增加个托盘功能以便更加人性化,托盘化以前是做过的,这次居然鼓捣半天未果,纠结于托盘后鼠标单击无法弹出窗体,而把相关代码复制到新建工程中运行却没有任何问题,这可真是够诡异,查看其他子类化模块和鼠标事件后确定均跟此怪事无关,于是开始研究为何没能触发Form_MouseMove事件,后才发现原因并得以解决。
原来这个托盘的Form_MouseMove事件有一个不大不小的bug(姑且算),就是鼠标移入托盘图标后的鼠标在form中的坐标恒定为
7680,0,所以问题就来了 如果窗体上的这个位置被任意控件遮挡则将无法触发Form_MouseMove事件,而我的程序里这个位置确实是被按钮挡住了,所以无法响应鼠标事件,调整按钮位置空出7680,0这个点后运行恢复正常。

应该还有人被这个bug困扰过,记录下来备忘。 --------------------编程问答-------------------- 感谢分享…… --------------------编程问答-------------------- 记住了,3Q。 --------------------编程问答-------------------- 哈哈,真是够诡异的!!感谢分享!! --------------------编程问答-------------------- 这个我以前也碰到过。后来也是调试鼠标位置发现的。 --------------------编程问答-------------------- 谢谢分享经验,见识了。

好奇的驱使使我翻了一下相关资料,发现一点东西,不敢独享,也与大家分享备忘。
似乎在Form上发生以下几种事件时,鼠标的坐标X值都为恒定的值且都不相同。

MouseMove:7680
Left MouseDown:7695
Left MouseUp:7710
Left DoubleClick:7725
Right MouseDown:7740
Right MouseUp:7755
Right DoubleClick:7770

可以参考一下这个源码
http://www.vbaccelerator.com/home/vb/utilities/Goldfish/Goldfish_Source_Code_zip_fSysTray_frm.asp
它是Select Case鼠标的X值来RaiseEvent的。
没试过除了7680,以上其他坐标被遮挡会不会使相应的事件失效,有兴趣的同学不妨试一下 --------------------编程问答--------------------
引用 5 楼 dwcxoft 的回复:
谢谢分享经验,见识了。

好奇的驱使使我翻了一下相关资料,发现一点东西,不敢独享,也与大家分享备忘。
似乎在Form上发生以下几种事件时,鼠标的坐标X值都为恒定的值且都不相同。

MouseMove:7680
Left MouseDown:7695
Left MouseUp:7710
Left DoubleClick:7725
Right MouseDown:7740
Righ……

学习了! --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,