Shell_NotifyIcon生成多个图标

时间:2016-03-03 07:58:04

标签: winapi swt windows-shell

我们在我们的应用程序中使用SWT(基于java)来贡献Windows通知区域。

通过移动到Windows 10,我们看到图标的显示随着时间的推移而增加,最终填满了整个通知区域。

我检查了内部SWT代码,下面是SWT调用Shell_NotifyIconW来提供图标的代码。

NOTIFYICONDATA iconData = OS.IsUnicode ? (NOTIFYICONDATA) new NOTIFYICONDATAW () : new NOTIFYICONDATAA ();
    iconData.cbSize = NOTIFYICONDATA.sizeof;
    iconData.uID = id;
    iconData.hWnd = display.hwndMessage;
    iconData.hIcon = hIcon;
    iconData.uFlags = OS.NIF_ICON;
    OS.Shell_NotifyIcon (OS.NIM_MODIFY, iconData);

OS.Shell_NotifyIcon方法中的代码

public static final boolean Shell_NotifyIcon (int dwMessage, NOTIFYICONDATA lpData) {
    if (IsUnicode) return Shell_NotifyIconW (dwMessage, (NOTIFYICONDATAW)lpData);
    return Shell_NotifyIconA (dwMessage, (NOTIFYICONDATAA)lpData);
}

因此,每当我们调用SWT方法在通知区域中设置图像/图标时。创建了多个托盘图标。

在我们的应用程序中,我们只使用OS.NIM_ADD初始化托盘项目,然后继续设置托盘项目的图像,内部调用OS.NIM_MODIFY,如上所示。

有没有人对此问题有任何暗示?

如何查看内部Windows shell SDK日志/跟踪?我怎么知道谁在创建图标?

UPDATE1

当您的计算机的比例因子发生变化时,此问题也可以重现

最诚挚的问候,

Saurav

1 个答案:

答案 0 :(得分:0)

只是为了更新。

此问题目前正由SWT团队调查

https://bugs.eclipse.org/bugs/show_bug.cgi?id=488739