VC编程技巧:托盘菜单不消失的完美解决方法。

本文探讨了在Windows系统中解决托盘菜单不消失的问题。通过使用MOUSEHOOK技术,可以实现在鼠标点击其他区域时,托盘菜单能够正确消失,同时不影响菜单的功能性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

    前不久,看到一个搞笑动画《右下角的战争》,有QQ、MSN、360、金山,瑞星等国内外几大工具软件的托盘图标参战,相互斗嘴,有意思!可见托盘是很火啊!

    很多软件一启动就会在windows 右下角显示一个可爱图标,那个在软件界来说是托盘。托盘对软件的使用者来说,有很多好处,这理不列举。

    托盘有时会显示一组功能菜单,方便让用户完成一些功能操作。

    很多软件工程师,可能都碰到这样的情况,托盘菜单显示时,用MOUSE点其它地方托盘菜单不会消失!有些人提出用SetForegroundWidnow() API把原来窗口切换到前端,并获取焦点,来使托盘菜单消失。托盘菜单虽说是消失了,但是,不想显示的窗口却带到了前面,这可是用户不想要的。因此这个方法并不是最好的解决方案。

   用MOUSE HOOK 可解完美解此问题。安装WH_MOUSE_DLL类型钩子的目的是拦截MOUSE点击事件。有MOUSE点击事件被拦截到时就向前安装钩子的窗口发自定义消息,在消息处理过程中处理托盘菜单的消失。需要注意是,如何让托盘菜单的消失还不能影响菜单功能的响应?这里有点技巧:消息处理过程中要延时200~300MS.然后再处理托盘菜单隐藏。

   VC  实现MOSE HOOK细节请查找MSDN或相关技术资料!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值