我遇到气球问题首先他们拒绝显示但发现了这个帖子:
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())
用于创建托盘图标,它确实:
所有回调消息都可以使用更改工具提示/更改图标/设置焦点/删除托盘图标功能也可以在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。
答案 0 :(得分:1)
cbSize=504
只有在使用Shell_NotifyIcon()
和NOTIFYICONDATA
的Ansi版本,正在使用NOTIFYICONDATA
的XP(v3)版本以及您的编译器&#时才有意义39; s对齐设置实际上正确对齐NOTIFYICONDATA
字段,因此XP字段排列恰好为504字节。如果没有看到您的实际代码,编译器设置或任何上下文信息,则无法进一步解决您的问题。