我需要将一些图标作为资源添加到我的项目中(在这种情况下,由于 TCoolTrayIcon 中的错误,我无法使用 TImageList,并且我无法快速替换该组件)。
我创建了一个 Icons.rc 脚本来将两个 ico 文件添加到 Delphi 资源文件中:
redicon ICON "c:\icon\red.ico"
greenicon ICON "c:\icon\green.ico"
它可以很好地编译为 icon.res,因此我将其添加到我的 Delphi 7 项目的第一个单元中:
{$R icons.res}
然后我将句柄存储在 MainForm 的 OnCreate() 中:
hRedIcon := LoadIcon(hInstance,'redicon');
hGreenIcon := LoadIcon(hInstance,'greenicon');
然后使用 handle 就可以了。
现在解决问题 - 完成此操作后,项目选项中添加的项目图标(尺寸为 16x16 到 48x48)将被我在 {$R Icons.res 中添加的第一个图标(16x16 redicon)替换}.
如何防止这种情况发生?如何将其他图标作为资源添加到项目中,而不替换在“项目选项”->“应用程序”->“加载图标”中添加的图标?
最佳答案
VCL 硬编码应用程序图标的名称'MAINICON'
。这可以在TApplication.Create
中的代码中看到:
FIcon.Handle := LoadIcon(MainInstance, 'MAINICON');
另一方面,shell 假定可执行文件中的第一个图标是主应用程序图标。 shell 使用的顺序是按图标名称的字母顺序排列的。
这样做的结果是,所有图标的名称都应该出现在字母表中的 MAINICON 之后。
关于delphi - 在项目中添加 .res 文件会替换默认图标。如何防止这种情况发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15564755/