2013-11-02 19 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

编辑后,不知道你是否意识到这一点。 –