Windows Delphi在exe/dll中添加和使用多个资源文件*.RES
我对在delphi中使用*.RES文件有疑问 e、 我有两个资源文件:1.RES和2.RES。这两个RES文件都包含称为IMAGE1(jpg)的不同图像 我使用以下命令将RES文件添加到Delphi应用程序:Windows Delphi在exe/dll中添加和使用多个资源文件*.RES,windows,delphi,Windows,Delphi,我对在delphi中使用*.RES文件有疑问 e、 我有两个资源文件:1.RES和2.RES。这两个RES文件都包含称为IMAGE1(jpg)的不同图像 我使用以下命令将RES文件添加到Delphi应用程序: {$R '1.RES'} {$R '2.RES'} 如何指定要使用的资源文件? 如果我只有一个RES文件,我想检索图像时使用以下命令: var RS : TResourceStream; jpg : TjpegImage; RS := TResourceStream.Creat
{$R '1.RES'}
{$R '2.RES'}
如何指定要使用的资源文件?
如果我只有一个RES文件,我想检索图像时使用以下命令:
var RS : TResourceStream;
jpg : TjpegImage;
RS := TResourceStream.Create(HInstance,'IMAGE1',RT_RCDATA);
jpg.LoadFromStream(RS);
现在,如果我有2个RES文件,我怎么知道它将加载什么?
我认为我需要控制HInstance,但我无法理解如何控制。给定模块中的资源名称必须是唯一的,就像函数中的变量必须有唯一的名称一样,目录中的文件必须有唯一的名称等等。因此,如果您将两个同名的资源放入同一个模块中,一个资源将被丢弃,您将只能检索剩余的资源 如果你不清楚模块是什么,我会尽力解释。模块是DLL、可执行文件或Delphi包。您的可执行文件是单个模块,具有单个实例句柄。它链接到DLL,每个DLL都是独立的模块。可执行文件加载的任何包也是不同的模块。您可以在其他模块中拥有与可执行文件中的资源同名的资源 我想我需要控制自己的立场,但我无法掌握如何控制 我希望你现在能理解这一点。值
HInstance
标识模块,在代码中它指与可执行文件关联的模块
您的选择:
所以我必须制作更多的DLL。感谢您的快速回答:)或使用不同的名称。这就是我要做的。因为你用
exe
和dll
标记了你的问题,我假设你在exe中有一个资源,在dll中有另一个?在这种情况下,是的,模块的HInstance
就是“答案”。@a两个相邻的$R
语句表明,在这种情况下,链接器传递不应该产生关于“重复资源”的错误消息吗?