首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows程序中加载图标

在Windows程序中加载图标
EN

Stack Overflow用户
提问于 2014-05-25 07:02:12
回答 2查看 19.1K关注 0票数 7

我试图在我的程序中设置一个自定义图标,但是什么都没有发生。

  1. 我使用这个工具创建了一个图标。
  2. 我创建了一个包含内容的资源文件: MYICON1图标"glider.ico“
  3. 我将资源文件添加到Visual 2013项目中,并将其类型设置为“”。键入"Resource“不起作用(”无效或损坏的文件:无法在0x1A处读取“)
  4. 在创建窗口时,我使用以下代码加载图标: wc.hIcon = LoadIcon( hInstance,MAKEINTRESOURCE( MYICON1 ) );// MYICON1在Resource.h中定义为101。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-25 07:42:11

只是为了确保我正确理解了你的问题…当您将资源文件的类型设置为"Resource“时,一切都会很好,对吗?这是正确的设置,把它留在那里。其他东西是针对.NET应用程序的。

所以问题是你没有看到图标?你在编辑器中创建了什么大小的图标?LoadIcon函数非常老,只能加载默认大小的图标,通常是32x32。如果要加载具有不同大小的图标,则需要使用函数。超过99%的时间,这是您应该调用的函数加载图标。我好几年没用过LoadIcon了。

代码语言:javascript
复制
HICON hIcon = static_cast<HICON>(::LoadImage(hInstance,
    MAKEINTRESOURCE(MYICON1),
    IMAGE_ICON,
    48, 48,    // or whatever size icon you want to load
    LR_DEFAULTCOLOR);

正如退役的Ninja在他的评论中所建议的,当代码不能按预期工作时,一定要测试函数的返回值。例如,测试hIcon是否为NULL。如果是这样,则LoadImage函数失败,您需要找出原因。很可能,您传递的参数不正确。要么在应用程序模块中没有该ID的资源,要么在图标文件中没有具有相应大小的图标。

另一个用于调试的技巧是使用内置的系统图标之一。如果你能看到那个图标,你知道一切正常工作,你可以开始交换东西来加载你的自定义图标。例如:

代码语言:javascript
复制
HICON hIcon = static_cast<HICON>(::LoadImage(NULL,
    MAKEINTRESOURCE(IDI_WARNING),
    IMAGE_ICON,
    0, 0,
    LR_DEFAULTCOLOR | LR_SHARED | LR_DEFAULTSIZE));

它应该显示标准警告图标,就像在消息框中看到的图标一样。如果这是可行的,但加载自己的图标不起作用,问题很可能是您创建的.ico文件。

票数 8
EN

Stack Overflow用户

发布于 2021-03-20 01:04:53

您可以像这样设置图标资源,并使用Load‘与w ex h图标和w ex h图标Sm一起使用。同时设置项目输出图标和程序图标。

代码语言:javascript
复制
'IDI_MAIN_ICON           ICON                    "cellphone.ico"
'Load Icon( h Instance, MAKEINTRESOURCE(IDI_MAIN_ICON));'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23852864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档