Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;NetBeans Win32 hwnd图标_C++_Winapi_Netbeans_Icons - Fatal编程技术网

C++ C++;NetBeans Win32 hwnd图标

C++ C++;NetBeans Win32 hwnd图标,c++,winapi,netbeans,icons,C++,Winapi,Netbeans,Icons,在NetBeans中将图标添加到应用程序窗口时遇到困难。代码与Win32相关。每当我将图标添加到资源文件夹(在NetBeans IDE中)时,LoadImage()或LoadIcon()方法都无法检索图标文件,我得到的结果是以下屏幕截图: 所以我想知道,我放置图标的位置是否有问题?如果是,我可以把图标放在哪里?(项目目录如下): 如果它与位置无关,或者我使用的是正确的位置,那么可能是我使用的代码吗?(代码如下): 如能反馈,我们将不胜感激。我真的很想知道这是怎么回事。谢谢 -CA1K 编辑

在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));