Winapi Shell\u NotifyIcon NIF\u信息不显示图标

Winapi Shell\u NotifyIcon NIF\u信息不显示图标,winapi,user32,Winapi,User32,我对气球有问题首先他们拒绝展示,但发现了以下线索: 然后将cbSize更改为504气球显示但没有图标,所有标准图标都不会显示,自定义图标也不会显示,结构如下所示: cbSize = 504 hWnd = HDL uID = 10 uFlags = NIF_INFO szInfo = sBody uTimeout = 20000 szInfoTitle = sTitle dwInfoFlags = NIIF_ERROR 有人知道图标失败的原因吗?(已尝试了各种组合中的所有结构尺

我对气球有问题首先他们拒绝展示,但发现了以下线索:

然后将cbSize更改为504气球显示但没有图标,所有标准图标都不会显示,自定义图标也不会显示,结构如下所示:

 cbSize = 504
 hWnd = HDL
 uID = 10
 uFlags = NIF_INFO
 szInfo = sBody
 uTimeout = 20000
 szInfoTitle = sTitle
 dwInfoFlags = NIIF_ERROR
有人知道图标失败的原因吗?(已尝试了各种组合中的所有结构尺寸和紫外线)

编辑:

用于创建托盘图标,它可以:

所有回调消息都与更改工具提示/更改图标/设置焦点/删除托盘图标功能一起工作,在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())


使用cbSize的结构大小适用于除气球以外的所有东西,它们甚至不会显示,并且大小报告为688。

cbSize=504
只有在使用Ansi版本的
Shell\u NotifyIcon()
notifyiconda
时才有意义,因为它们使用的是XP(v3)版本的
notifyiconda
,而编译器的对齐设置实际上是正确对齐
notifyiconda
字段,因此XP字段正好对齐504字节。如果看不到您的实际代码、编译器设置或任何上下文信息,就无法进一步解决问题。

编辑的帖子,不知道您是否意识到了这一点。
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())