无法使用 LoadIcon WINAPI 从资源中加载图标
Posted
技术标签:
【中文标题】无法使用 LoadIcon WINAPI 从资源中加载图标【英文标题】:Can't load icon from resources using LoadIcon WINAPI 【发布时间】:2015-01-12 08:53:56 【问题描述】:为什么这行代码在visual c++中不起作用
_icon = LoadIcon(GetModuleHandle(NULL) ,MAKEINTRESOURCE(IDI_ICON1));
我检查了 rc 文件和 resource.h,图标定义在那里 rc文件
IDI_ICON1 ICON "resources\\close.ico"
资源.h
#define IDI_ICON1 101
我在静态库中使用此代码,因此 HINSTANCE 与 exe 相同,对吗? 但我总是收到 ERROR_RESOURCE_TYPE_NOT_FOUND 错误。
【问题讨论】:
你是否包含了静态库的 .res 文件? 我猜不是,应该怎么做? 在链接器选项中有附加依赖项。请注意,静态库中的资源 ID 可能与您项目的 resource.h 中定义的 ID 冲突 谢谢它的工作,你应该把它作为答案 这里使用GetModuleHandle(NULL)
是错误的。首先,您可以通过传递NULL
来实现相同的目的。如果您仔细阅读文档,您就会知道。但其次,考虑一下如果将代码编译成 DLL 会发生什么。始终使用包含代码的模块的模块句柄。
【参考方案1】:
使用链接器选项中的其他依赖项包含静态库的 .res 文件。请注意,静态库中的资源 ID 可能与您项目的 resource.h 中定义的 ID 冲突
【讨论】:
以上是关于无法使用 LoadIcon WINAPI 从资源中加载图标的主要内容,如果未能解决你的问题,请参考以下文章
Windows API一日一练 20 LoadString LoadIcon和LoadCursor函数