繁体   English   中英

为什么系统任务栏图标会清除以前显示的图标?

[英]Why would a system tray icon clear an earlier-displayed one?

我们有一个使用各种系统任务栏图标与用户通信的应用程序。 不同的图标指示(否则为无窗口)应用程序的不同内部状态。 我们使用此Code Guru项目 (MFC版本;无论如何这都不是新应用程序)中的代码来实现系统任务栏,直到最近,它仍能正常工作。 但是,最近我们尝试添加另一个图标,并遇到了麻烦。

这是应该如何工作的:

  1. 我们有一个主图标(称为“ A”),指示该应用程序正在运行。

  2. 如果发生特定事件,我们将显示图标“ B”,用户可以在其上悬停鼠标以获取带有有关该事件状态的工具提示。

  3. 如果(最近添加的,内部的,线程化的)过程开始,我们将显示图标“ C”,然后用户可以将鼠标悬停在该图标上以查看指示该活动进度的工具提示。

实际发生的情况:如果(尝试)显示图标“ C”时可见图标“ B”,则图标“ B”要么完全消失,不再返回,要么停留在那里,图标“ C”从不显示,但是图标“ B”的工具提示更改为图标“ C”应具有的内容。

我已经简化了场景; 我们实际上还有其他几个图标,但很少使用。 但是,直到最近几周我们添加了图标“ C”,我们才能够轻松显示多个图标。

有任何想法吗? 很高兴澄清我没有很好解释的任何事情。

您需要为每个图标使用不同的uID 文件说:

任务栏图标的应用程序定义的标识符。 当调用Shell_NotifyIcon时,命令行管理程序使用(hWnd加uID)或guidItem标识要操作的图标。 通过为每个hWnd分配不同的uID,可以使多个图标与单个hWnd关联。 如果指定了guidItem,则将忽略uID。

换句话说,您需要为uID选择一个值。 这样,每次调用Shell_NotifyIcon()时,外壳程序便会知道您所指的是哪个图标。 显然,您必须为每个图标使用不同的值。 因此,对于图标A使用0 ,对于图标B使用1 ,依此B

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM