C++ C++;NetBeans Win32 hwnd图标
在NetBeans中将图标添加到应用程序窗口时遇到困难。代码与Win32相关。每当我将图标添加到资源文件夹(在NetBeans IDE中)时,LoadImage()或LoadIcon()方法都无法检索图标文件,我得到的结果是以下屏幕截图: 所以我想知道,我放置图标的位置是否有问题?如果是,我可以把图标放在哪里?(项目目录如下): 如果它与位置无关,或者我使用的是正确的位置,那么可能是我使用的代码吗?(代码如下): 如能反馈,我们将不胜感激。我真的很想知道这是怎么回事。谢谢 -CA1KC++ C++;NetBeans Win32 hwnd图标,c++,winapi,netbeans,icons,C++,Winapi,Netbeans,Icons,在NetBeans中将图标添加到应用程序窗口时遇到困难。代码与Win32相关。每当我将图标添加到资源文件夹(在NetBeans IDE中)时,LoadImage()或LoadIcon()方法都无法检索图标文件,我得到的结果是以下屏幕截图: 所以我想知道,我放置图标的位置是否有问题?如果是,我可以把图标放在哪里?(项目目录如下): 如果它与位置无关,或者我使用的是正确的位置,那么可能是我使用的代码吗?(代码如下): 如能反馈,我们将不胜感激。我真的很想知道这是怎么回事。谢谢 -CA1K 编辑
编辑:上面显示的代码已恢复正常,我只是想找到检索图标文件的方法。@andlabs是正确的<代码>IDI_应用程序在WinUser.h中定义为:
#define IDI_APPLICATION MAKEINTRESOURCE(32512)
相反,您需要:
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));
wc.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SMALLICON));
将IDI_图标
定义为一个数字:
#define IDI_ICON 1
在resource.rc中:
IDI_ICON ICON "icon.ico"
这将在任务栏中设置图标。对于标题栏中的图标,请在WM_create
中使用:
HICON hicon = (HICON)LoadImage(GetModuleHandleW(NULL), MAKEINTRESOURCE(IDI_ICON),
IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE);
SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hicon);
----------------------------------------------------------
编辑:
要进行简单的测试,请尝试
在resource.rc文件中:
1 ICON "icon.ico"
在.cpp文件中:
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(1));
我可能错了,但是
LoadIcon(NULL,IDI_应用程序)
被记录为返回Windows提供的标准图标,而不是应用程序的图标。您需要弄清楚NetBeans项目中的资源如何映射到可执行文件中嵌入的资源(“Windows资源”)。我忘记添加hInstance
或GetModuleHandleW(NULL)
。请参阅更新的答案。它在Netbeans中工作,但是我很难使用它,我必须清理/重建,然后使用命令windres.exe resource.rc resource.o
再次构建。
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(1));