You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win32 API应用添加图标资源后int转LPCSTR转换错误如何解决

问题原因

你遇到的编译错误根源是两个用法错误:

  • 自定义的图标资源ID是整型(你定义的IDI_MYICON值为101),但LoadIcon函数的第二个参数要求接收LPCSTR类型,直接传入整型会触发类型不匹配错误
  • 加载程序自身的自定义资源时,LoadIcon的第一个参数不能传NULL,NULL仅用于加载系统预定义图标,无法读取你嵌入程序的私有资源

解决方案

用Win32内置的MAKEINTRESOURCE宏将整型资源ID转换为符合要求的指针类型,同时将第一个参数替换为WinMain传入的当前程序实例句柄hInstance即可。

修正后的代码片段如下:

// 替换你原来的两行LoadIcon调用
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MYICON));
wc.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MYICON));

补充说明

MAKEINTRESOURCE是系统提供的专用转换宏,本质是把整型ID强转成const char*类型,不会产生额外的运行开销,专门用于给资源相关API传递数字形式的资源ID。

内容的提问来源于stack exchange,提问作者na-no.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:06:02