4

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

当我的浮出控件处于活动状态时,如何防止溢出窗口自动隐藏?

截屏

  • 图 1:单击位于溢出区域的通知图标 + 几秒钟的用户不活动后显示的测试弹出窗口。
  • 图 2:通过单击位于溢出区域的通知图标 + 2 分钟的用户不活动状态显示电池计量器弹出按钮。
4

2 回答 2

1

你应该打电话

NotifyWinEvent(EVENT_SYSTEM_MENUPOPUPSTART, Handle, OBJID_CLIENT, 0);

在你展示你的窗口并打电话之前

NotifyWinEvent(EVENT_SYSTEM_MENUPOPUPEND, Handle, OBJID_CLIENT, 0);

隐藏之后。

于 2015-02-14T20:22:44.140 回答
0

弹出窗口与任何其他窗口没有什么不同。

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

另外,您将能够根据需要做一些花哨的事情,而不会遇到任何问题。

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

于 2013-08-22T21:48:08.350 回答