1

所以我有一个没有控制台的程序。它首先创建一个虚拟 HWND,然后将其隐藏,然后充当通知区域应用程序(留在托盘中)。人们可以将鼠标悬停在程序上以查看其状态并按热键在屏幕上执行任务。

无论如何,我想在托盘中显示我的程序图标但不能。我将图标资源添加到 Visual Studio,我的可执行文件在资源管理器中有一个图标。该资源的大小为 16x16 - 256x256。

现在,我将 NOTIFYICONDATA 的信息设置为: nid.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON1));

并包括“resource.h”

它将 IDI_ICON1 定义为 104。但是,当我使用它时,会出现蓝色的解释点图标(即 Windows 默认图标之一)。我尝试了 IDI_ERROR 并且错误图标显示正常。我尝试了一个自定义的 12x12 图标,因为我阅读尺寸可能是问题,但这也不起作用。

IDI_APPLICATION 使用应用程序的默认图标,即默认的.exe 图标。

我目前不知道该尝试或做什么。

在此先感谢您的帮助!

4

1 回答 1

4

LoadIcon()的一篇 MSDN 文章谈到了它的第一个参数:

模块实例的句柄,其可执行文件包含要加载的图标。加载标准图标时,此参数必须为 NULL。

由于您加载的不是标准图标,而是您自己的,因此您需要提供一个有效的模块句柄。可执行文件的模块句柄可以通过传递NULLGetModuleHandle()函数来检索,因此代码如下所示:

nid.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1));
于 2014-02-23T15:12:54.580 回答