将.res文件添加到项目中会替换默认图标。如何防止它?

时间:2013-03-22 07:12:14

标签: delphi delphi-7

我需要在项目中添加一些图标作为资源(在这种情况下我不能使用TImageList,因为TCoolTrayIcon中存在错误,我无法快速替换组件)。 / p>

我创建了一个icons.rc脚本,将两个ico文件添加到Delphi资源文件中:

redicon ICON "c:\icon\red.ico"
greenicon ICON "c:\icon\green.ico"

它可以很好地编译到icons.res,所以我将它添加到我的Delphi 7项目的第一个单元中:

{$R icons.res}

然后我将句柄存储在MainForm的OnCreate()中:

hRedIcon := LoadIcon(hInstance,'redicon');
hGreenIcon := LoadIcon(hInstance,'greenicon');

然后使用句柄就好了。

现在问题 - 在这之后,项目选项中添加的项目图标(大小为16x16到48x48)被第一个图标(16x16 redicon)替换为{$ R图标中添加的' .RES}。

如何防止这种情况?如何在不替换项目选项中添加的图标的情况下将其他图标作为资源添加到项目中 - >申请 - >加载图标?

1 个答案:

答案 0 :(得分:7)

VCL为您的应用程序图标硬编码名称'MAINICON'。这可以在TApplication.Create

中的代码中看到
FIcon.Handle := LoadIcon(MainInstance, 'MAINICON');

另一方面,shell假定可执行文件中的第一个图标是主应用程序图标。 shell使用的顺序是按图标名称的字母顺序排列。

这样做的结果是所有图标的名称都应该出现在字母表中的MAINICON之后。

相关问题