为什么 Shell_NotifyIcon 不显示气球通知?
Why Shell_NotifyIcon not showing balloon notification?
我编写了一个示例应用程序来了解如何将气球通知添加到 Win32 应用程序。有人可以指出为什么 Shell_NotifyIcon()
不显示气球通知吗?
GetLastError
returns 2147500037
对于 Shell_NotifyIcon()
.
#include <Windows.h>
#include "shellapi.h"
int main()
{
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATAA_V3_SIZE);
nid.uTimeout = 500;
nid.uID = 1;
nid.uFlags = NIF_TIP | NIF_ICON | NIF_MESSAGE | NIF_INFO | 0x00000080;
nid.uCallbackMessage = WM_USER + 200;
nid.hIcon = LoadIcon(NULL, IDI_INFORMATION);
lstrcpy(nid.szTip, L"Test Tip");
lstrcpyW(nid.szInfoTitle, L"Test Title");
Shell_NotifyIcon(NIM_ADD, &nid); //GetLastError returns - 2147500037
return 0;
}
应该使用 NOTIFYICONDATA_V3_SIZE
而不是 NOTIFYICONDATAA_V3_SIZE
,因为您显然使用了 Unicode(从 lstrcpyW
和 L"..."
可以看出),并且您使用默认值 NOTIFYICONDATA
应该只使用 nid.cbSize = NOTIFYICONDATA_V3_SIZE;
或 nid.cbSize = sizeof(NOTIFYICONDATA)
,你不希望有整数常量的大小。
在调用 GetLastErrror
之前还应检查 Shell_NotifyIcon
结果,如果不是 FALSE
,则 GetLastError
不相关。
我编写了一个示例应用程序来了解如何将气球通知添加到 Win32 应用程序。有人可以指出为什么 Shell_NotifyIcon()
不显示气球通知吗?
GetLastError
returns 2147500037
对于 Shell_NotifyIcon()
.
#include <Windows.h>
#include "shellapi.h"
int main()
{
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATAA_V3_SIZE);
nid.uTimeout = 500;
nid.uID = 1;
nid.uFlags = NIF_TIP | NIF_ICON | NIF_MESSAGE | NIF_INFO | 0x00000080;
nid.uCallbackMessage = WM_USER + 200;
nid.hIcon = LoadIcon(NULL, IDI_INFORMATION);
lstrcpy(nid.szTip, L"Test Tip");
lstrcpyW(nid.szInfoTitle, L"Test Title");
Shell_NotifyIcon(NIM_ADD, &nid); //GetLastError returns - 2147500037
return 0;
}
应该使用 NOTIFYICONDATA_V3_SIZE
而不是 NOTIFYICONDATAA_V3_SIZE
,因为您显然使用了 Unicode(从 lstrcpyW
和 L"..."
可以看出),并且您使用默认值 NOTIFYICONDATA
应该只使用 nid.cbSize = NOTIFYICONDATA_V3_SIZE;
或 nid.cbSize = sizeof(NOTIFYICONDATA)
,你不希望有整数常量的大小。
在调用 GetLastErrror
之前还应检查 Shell_NotifyIcon
结果,如果不是 FALSE
,则 GetLastError
不相关。