为何NotifyICON控件上的ContentMenu中的MenuItem在触发时,不能触发MenuItem的MesureItem和DrawItem的事件!各位可以试一试!!欢迎讨论

RainStoneMail 2004-09-23 09:57:42
如题
...全文
100 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
AhBian 2004-09-29
  • 打赏
  • 举报
回复
我几乎不用 .NET FCL 中的菜单控件来做实际的项目,所以楼主描述的情节我从未碰到过。
但对于 .NET 中的 OwnerDraw 功能的缺失却到是经历过一回,曾弄得我痛苦了两个工作日。

我的经历是:
为了监测一个窗口的即将最小化和即将还原两个瞬间的事件,我使用了 Windows Hook 的技术。注意,除了 Windows Hook 外,这两个瞬间的确没有其他技术或接口来得到。
但我有很多继承自 ComboBox 的自定义控件使用了 OwnerDraw 技术,却因为使用了 Windows Hook 而导致所有的 OwnerDraw 消息丢失,也就是说无法 OwnerDraw。
因为是在最后测试的时候才发现这个问题的,一开始我没想到原因是什么。痛苦了两天后,才怀疑到是否因为 Windows Hook 的使用才造成这样的现象。最终,只能去掉这个 Windows Hook 技术。


对于本帖的情节,我想 NotifyIcon 的内部实现是否也使用到了 Windows Hook 技术,所以导致菜单的 OwnerDraw 失败。只是猜测,仅作参考。
RainStoneMail 2004-09-29
  • 打赏
  • 举报
回复
老兄能给个例子说明一下
怎样调用windows api 函数TrackPopupMenu来显示一个弹出式菜单
RainStoneMail 2004-09-23
  • 打赏
  • 举报
回复
同志们给点意见也好啊
9sun888 2004-09-23
  • 打赏
  • 举报
回复
偶也碰到这个问题,可能是微软的BUG吧!
我的解决方法是:不用NotifyICON控件的ContentMenu这个属性!在NotifyICON控件的MouseUp事件中调用windows api 函数TrackPopupMenu来显示一个弹出式菜单(继承于ContentMenu的类).

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧