在Windows程序中加载图标
Loading an icon in Windows program
我正在尝试设置自定义图标到我的程序中,但没有任何反应。
- 我用这个工具创建了一个图标。
-
我创建了一个资源文件,内容为:
MYICON1 ICON "glider.ico"
-
我将资源文件添加到我的Visual Studio 2013项目中,并将其类型设置为"resource Compiler"。类型"资源"不工作("无效或损坏的文件:无法在0x1A读取")
-
在创建窗口时,我用以下代码加载图标:
wc.hIcon = LoadIcon( hInstance, MAKEINTRESOURCE( MYICON1 ) ); // MYICON1 is defined in Resource.h as 101.
只是为了确保我正确理解了你的问题"当你将资源文件的类型设置为"资源编译器"时,一切都编译得很好,对吧?这是正确的设置,就这样吧。其他的是。net应用程序。
所以问题只是你没有看到图标?您在编辑器中创建了多大的图标?LoadIcon
函数非常老,只能加载默认大小的图标,通常是32x32。如果想加载不同大小的图标,则需要使用LoadImage
函数。超过99%的情况下,你应该调用这个函数来加载图标。我已经很多年没有使用LoadIcon
了。
HICON hIcon = static_cast<HICON>(::LoadImage(hInstance,
MAKEINTRESOURCE(MYICON1),
IMAGE_ICON,
48, 48, // or whatever size icon you want to load
LR_DEFAULTCOLOR);
就像退役忍者在他的评论中建议的那样,当代码没有按预期工作时,一定要测试函数的返回值。例如,测试hIcon
是否为NULL
。如果是这样,则LoadImage
函数失败,您需要找出原因。最有可能的是,您传递的参数不正确。要么是你的应用模块中没有该ID的资源,要么是图标文件中没有相应大小的图标。
用于调试的另一个技巧是使用一个内置的系统图标。如果你能看到那个图标,你就知道一切正常,你就可以开始交换东西来加载你的自定义图标。例如:
HICON hIcon = static_cast<HICON>(::LoadImage(NULL,
MAKEINTRESOURCE(IDI_WARNING),
IMAGE_ICON,
0, 0,
LR_DEFAULTCOLOR | LR_SHARED | LR_DEFAULTSIZE));
应该显示标准警告图标,就像您在消息框中看到的那样。如果的工作,但加载你的自己的图标不工作,问题很可能是与你创建的。ico文件。
你可以像这样设置你的图标资源,并使用加载图标'与wcexh图标和wcexh图标Sm。它同时设置项目输出图标和程序图标。
'IDI_MAIN_ICON ICON "cellphone.ico"
'Load Icon( h Instance, MAKEINTRESOURCE(IDI_MAIN_ICON));'
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 从 wxWidgets 中的.DLL加载图标
- 如何修复加载图标()函数不显示图标?
- wxWidgets 3.1.3 图标在 mac 下加载 - ICNS 文件不可读?
- Windows/c - 从第三方EXE加载图标,用于SDL_SETWINDOWICON-崩溃
- Qt qrc 资源文件 - 无法加载图标
- Qt 创建器无法加载图标
- 动态加载窗口图标
- 如何在C Winapi中获得加载图标的大小
- 无法使用 LoadIcon WINAPI 从资源加载图标
- 我可以根据系统文件中某处的不同系统加载默认窗口图标吗?
- DrawIconEx和DrawIcon只绘制非动画的加载图标
- 在Windows程序中加载图标