我首先遇到了气球的问题,他们根本拒绝展示,但发现了这个线程:
为什么 Shell_NotifyIcon 气球提示不起作用?
然后将 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。