0
我們在我們的應用程序中使用SWT(基於Java)來貢獻Windows通知區域。Shell_NotifyIcon產生多個圖標
通過移動到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
你應該做一個[MCVE。如果你想讓我們看代碼。或者你可以自己調試。將所有調用記錄到'Shell_NotifyIcon'。那麼它應該是顯而易見的地方。 –
@DavidHeffernan感謝您的回覆...另一個問題,我無法在我的系統上重現此問題...我的用戶可以重現此 – saurav
添加日誌記錄代碼。讓用戶運行程序然後發送日誌輸出。 –