在 C++ 中使用 Win32 Api 在任务栏中设置 NOTIFY ICON
Set NOTIFY ICON in taskbar with Win32 Api in c++
我有这段代码 (来自 Microsoft 页面 here) 在任务栏中设置了一个图标,但我无法在其中显示任何图标。
//Notification
nid.cbSize = sizeof(nid);
nid.uFlags = NIF_ICON | NIF_TIP | NIF_GUID;
// Note: This is an example GUID only and should not be used.
// Normally, you should use a GUID-generating tool to provide the value to
// assign to guidItem.
static const GUID myGUID =
{ 0x23977b55, 0x10e0, 0x4041,{ 0xb8, 0x62, 0xb1, 0x95, 0x41, 0x96, 0x36, 0x68 } };
nid.guidItem = myGUID;
nid.hIcon = LoadIconA(wc.hInstance, IDC_ARROW);
// This text will be shown as the icon's tooltip.
StringCchCopy(nid.szTip, ARRAYSIZE(nid.szTip), title);
//TaskBar
nid.hWnd = hwnd;
// Show the notification.
Shell_NotifyIcon(NIM_ADD, &nid) ? S_OK : E_FAIL;
有人可以帮帮我吗?我只在任务栏中得到 space,但是 "transparent".
您加载图标的代码失败。你没有检查错误。如果您这样做了,您会看到 LoadIcon 返回 NULL。
IDC_ARROW 标识光标而不是图标,因此您可以将 IDC_ARROW 与 LoadCursor 一起使用。此外,如文档中所述,您必须为模块句柄传递 NULL,因为它是系统游标。但是无论如何你都需要加载一个图标。
所以,通过加载图标来解决您的问题。确保 LoadIcon returns 的值不是 NULL。通常,您可以通过将图标资源链接到您的可执行文件并加载它来实现。出于测试目的,您可以使用 LoadIcon 文档中描述的预定义图标之一。
请永远不要忽视错误检查。
我有这段代码 (来自 Microsoft 页面 here) 在任务栏中设置了一个图标,但我无法在其中显示任何图标。
//Notification
nid.cbSize = sizeof(nid);
nid.uFlags = NIF_ICON | NIF_TIP | NIF_GUID;
// Note: This is an example GUID only and should not be used.
// Normally, you should use a GUID-generating tool to provide the value to
// assign to guidItem.
static const GUID myGUID =
{ 0x23977b55, 0x10e0, 0x4041,{ 0xb8, 0x62, 0xb1, 0x95, 0x41, 0x96, 0x36, 0x68 } };
nid.guidItem = myGUID;
nid.hIcon = LoadIconA(wc.hInstance, IDC_ARROW);
// This text will be shown as the icon's tooltip.
StringCchCopy(nid.szTip, ARRAYSIZE(nid.szTip), title);
//TaskBar
nid.hWnd = hwnd;
// Show the notification.
Shell_NotifyIcon(NIM_ADD, &nid) ? S_OK : E_FAIL;
有人可以帮帮我吗?我只在任务栏中得到 space,但是 "transparent".
您加载图标的代码失败。你没有检查错误。如果您这样做了,您会看到 LoadIcon 返回 NULL。
IDC_ARROW 标识光标而不是图标,因此您可以将 IDC_ARROW 与 LoadCursor 一起使用。此外,如文档中所述,您必须为模块句柄传递 NULL,因为它是系统游标。但是无论如何你都需要加载一个图标。
所以,通过加载图标来解决您的问题。确保 LoadIcon returns 的值不是 NULL。通常,您可以通过将图标资源链接到您的可执行文件并加载它来实现。出于测试目的,您可以使用 LoadIcon 文档中描述的预定义图标之一。
请永远不要忽视错误检查。