gpt4 book ai didi

c++ - 在 C++ 中使用 Win32 Api 在任务栏中设置 NOTIFY ICON

转载 作者:行者123 更新时间:2023-11-28 05:33:50 29 4
gpt4 key购买 nike

我有这段代码(来自 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;

有人可以帮我吗?我只得到任务栏中的空间,但“透明”。

最佳答案

您加载图标的代码失败。你没有检查错误。如果您这样做了,您会看到 LoadIcon 返回了 NULL。

IDC_ARROW 标识光标而不是图标,因此您可以将 IDC_ARROW 与 LoadCursor 一起使用。此外,如文档中所述,您必须为模块句柄传递 NULL,因为它是系统游标。但是无论如何你都需要加载一个图标。

因此,通过加载图标来解决您的问题。确保 LoadIcon 返回一个非 NULL 的值。通常,您可以通过将图标资源链接到您的可执行文件并加载它来实现。出于测试目的,您可以使用 LoadIcon 文档中描述的预定义图标之一。

请永远不要忽视错误检查。

关于c++ - 在 C++ 中使用 Win32 Api 在任务栏中设置 NOTIFY ICON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38802222/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com