我们在我们的应用程序中使用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