2013-11-02 16 views
0

具有氣球的問題林首先他們拒絕在任何顯示,但在找到這個線程:Shell_NotifyIcon NIF_INFO不顯示圖標

Why aren't Shell_NotifyIcon balloon tips working?

然後改變CBSIZE到504氣球展示,但沒有在他們的圖標,所有標準圖標將不會顯示也不會自定義圖標,結構是這樣的:

cbSize = 504 
hWnd = HDL 
uID = 10 
uFlags = NIF_INFO 
szInfo = sBody 
uTimeout = 20000 
szInfoTitle = sTitle 
dwInfoFlags = NIIF_ERROR 

沒有人知道的原因,圖標會失敗? (已經嘗試了所有的結構尺寸和uVersion在各種組合)

編輯:

S.cbSize = 504; 
S.hWnd = HDL; 
S.uID = 101; 
S.uFlags = NIF_MESSAGE + NIF_ICON + NIF_TIP; 
S.uCallbackMessage = 0x4DE; 
S.hIcon = iHDL; 
S.szTip = sTooltip; 
S.uVersion = 3; 
S.dwInfoFlags = NIIF_NONE; 
Shell32.Shell_NotifyIconA(NIM_ADD,S:GetPointer()) 
Shell32.Shell_NotifyIconA(NIM_SETVERSION,S:GetPointer()) 

這是用於創建托盤圖標,它的作用:

enter image description here

所有回調消息與更改工具提示/更改圖標/設置焦點/刪除托盤圖標函數也按預期在XP和Win 8.1上工作,所有使用cbSize = 504和uVersion = 3與Ansi NIM_SETVERSION和NOTIFYICONDATA,氣球將顯示其只是沒有圖標將顯示甚至不是默認的:

S.cbSize = 504; 
S.hWnd = HDL 
S.uID = 101 
S.uFlags = NIF_INFO 
S.szInfo = sBody 
S.uTimeout = 20000 
S.szInfoTitle = sTitle 
S.dwInfoFlags = NIIF_ERROR 
Shell32.Shell_NotifyIconA(NIM_MODIFY,S:GetPointer()) 

enter image description here

使用結構CBSIZE的尺寸適用於一切,但氣球,他們甚至不會顯示,和大小報告,688

回答

1

cbSize=504僅在使用Ansys版本Shell_NotifyIcon()NOTIFYICONDATA時纔有意義,使用的是XP(v3)版本NOTIFYICONDATA,並且編譯器的對齊設置實際上正確地將NOTIFYICONDATA字段正確對齊所以XP字段正好排列爲504字節。在沒有看到您的實際代碼,編譯器設置或任何上下文信息的情況下,無法進一步排除您的問題。

+0

編輯後,不知道你是否意識到這一點。 –