【问题标题】:How to hide a taskbar balloon at will?如何随意隐藏任务栏气球?
【发布时间】:2009-05-23 22:29:49
【问题描述】:

强制任务栏图标显示气球提示很容易:我只需要在调用 Shell_NotifyIcon( NIM_MODIFY, ... ) 时设置 NIF_INFO 标志,气球就会出现,没问题。

现在,我也希望能够在不再需要气球时隐藏它,但我找不到这样做的方法。我尝试清除 NIF_INFO 标志并调用 Shell_NotifyIcon( NIM_MODIFY, ... ),但气球仍然存在。它确实会在几秒钟后自行消失,但这不是我想要的:当我的程序认为应该隐藏它时,我想立即隐藏它。

使气球消失的唯一方法似乎是破坏图标,然后将其重新添加到任务栏,但它很难看。

是否可以在不重新创建任务栏图标的情况下隐藏气球?谢谢。

【问题讨论】:

    标签: winapi taskbar tooltip balloon


    【解决方案1】:

    要立即隐藏气球,请将NOTIFYICONDATA 的成员szInfo 设置为空字符串,例如nid.szInfo[0] = 0;,然后调用Shell_NotifyIcon( NIM_MODIFY, &nid )

    【讨论】:

      【解决方案2】:

      我认为强行删除通知气球并不符合用户的最佳利益。有时用户不会立即查看通知,并且在几秒钟内发生的缓慢消失让他们有机会在气球消失之前查看。从可用性的角度来看,显示气球应该是应用程序的责任,但移除气球实际上应该是用户的责任。否则,您可能会隐藏他们真正感兴趣的信息,并且通过立即强行隐藏它,您可以完全消除用户在气球消失期间的“最后机会”。

      【讨论】:

      • 您说得对,在某些情况下,气球应该留在原处以便用户有时间查看它,但在很多情况下,移除气球应该会提供更好的体验。例如,假设我想通知用户我的程序正在尝试连接到服务器。连接可能只需要一秒钟,之后保持“连接到服务器......”气球没有意义。事实上,它可能会让用户感到困惑:连接已经建立,但气球说“正在连接......”,是不是程序有问题?
      • 所以与其隐藏气球...将其文本更改为“已连接”。并且仍然允许用户自行关闭它。 ;)
      • 气球应该只用于通知非关键事件。 MS Outlook 在与 Exchange 服务器的连接丢失并且在指定时间段内未恢复时显示一个气球,然后在恢复连接时显示一个气球。如果用户错过它,没有什么不好的事情发生,不是吗?如果需要多次尝试,显示一个气球来通知您的应用程序正在尝试连接可能会非常烦人。但是您可以更改图标,以便用户看到您的应用正在连接到服务器,并更新用户将鼠标悬停在您的图标上时显示的状态。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多