禁用NotifyIconOverflowWindow自动隐藏

时间:2013-07-17 10:25:25

标签: c# winapi taskbar flyout

我做了类似于win7电池表的弹出窗口。它的行为就像内置于一个,除非它通过位于NotifyAreaOverflowWindow上的通知图标显示并通知过度区域该窗口在一段时间后自动隐藏,而它应该仅在我的弹出窗口关闭时隐藏。我可以用spyxx发现的唯一区别是,在一段时间后溢出窗口只会发送一条WM_SHOWWINDOW wp:0 lp:0消息。

如何在我的弹出窗口处于活动状态时阻止溢出窗口自动隐藏?

screenshot

  • 图1:单击位于溢出区域的通知图标+用户不活动几秒后显示测试弹出窗口。
  • 图2:通过点击位于溢出区域的通知图标+ 2分钟的用户不活动来显示电池表弹出窗口。

2 个答案:

答案 0 :(得分:1)

你应该致电

NotifyWinEvent(EVENT_SYSTEM_MENUPOPUPSTART, Handle, OBJID_CLIENT, 0);
在显示窗口并致电之前

NotifyWinEvent(EVENT_SYSTEM_MENUPOPUPEND, Handle, OBJID_CLIENT, 0);

隐藏它之后。

答案 1 :(得分:0)

弹出窗口与其他任何窗口都没有区别。

如果我理解你的问题,那就是窗户随着时间的推移而消失,那么解决方案就很简单了。不要使用任何NotifyAreaOverflowWindow。相反,创建自己的窗口,具有适当的属性(没有控制框,没有最大/最小按钮,没有标题文本等...)。因为您可能无法控制您正在使用的类/对象的持续时间。它可能是针对单一通知而设计的,而不是适度有用的东西;)。

另外,你可以根据需要做一些奇特的事情而不再遇到问题。

以下教程详细介绍了如何完美定位它: http://blog.quppa.net/2010/12/09/windows-7-style-notification-area-applications-in-wpf-part-3-taskbar-position/