Delphi在exe/dll中添加和使用多个资源文件*.RES

Tom*_*vat 2 windows delphi

我有关于在delphi中使用*.RES文件的问题.

例如,我有两个资源文件:1.RES和2.RES.这两个RES文件都包含不同的图像,称为IMAGE1(jpg).

我使用以下命令将RES文件添加到Delphi应用程序:

{$R '1.RES'}
{$R '2.RES'}
Run Code Online (Sandbox Code Playgroud)

如何指定要使用的资源文件?如果我只有一个RES文件,当我想要检索图像时,我会使用这些命令:

var RS : TResourceStream;
    jpg : TjpegImage;

RS := TResourceStream.Create(HInstance,'IMAGE1',RT_RCDATA);
jpg.LoadFromStream(RS);
Run Code Online (Sandbox Code Playgroud)

现在,如果我有2个RES文件,怎么知道它会加载什么?我想我需要控制HInstance但我无法掌握如何.

Dav*_*nan 5

给定模块中的资源名称必须是唯一的,就像函数中的变量必须具有唯一名称一样,目录中的文件必须具有唯一名称,依此类推.因此,如果将两个具有相同名称的资源放入同一模块中,则会丢弃一个资源,并且您只能检索剩余资源.

如果您不清楚模块是什么,我会尝试解释.模块是DLL或可执行文件,或Delphi软件包.您的可执行文件是单个模块,具有单个实例句柄.它链接到DLL,每个DLL都是独立的不同模块.您的可执行文件加载的任何包也是不同的模块.您可以在可执行文件中具有与资源相同名称的其他模块中拥有资源.

我想我需要控制,HInstance但我无法掌握如何.

我希望你现在明白,这无济于事.该值HInstance标识模块,在代码中它指的是与可执行文件关联的模块.

你的选择:

  1. 为资源提供不同的名称.
  2. 将资源放入不同的模块中.