读书人

资源文件有一个vcl skin的一个皮肤在

发布时间: 2013-02-02 12:27:16 作者: rapoo

资源文件有一个vcl skin的一个皮肤,在程序中怎么动态调用
rc.rc内容:
skin RCDATA "images\VistaXP-VISTAXPB2.skn"

程序中读取代码:


function TResData.getStream(const hName: string): TResourceStream;
var
Stream: TResourceStream;
MyJpg: TJpegImage;
resDll: THandle;
begin
resDll := LoadLibrary(PChar(RESDLL_NAME));
try
Stream := TResourceStream.Create(resDll, hName, RT_RCDATA);
Result:=Stream;
finally
FreeLibrary(resDll);
end;
end;

载入皮肤:

SkinData1.LoadFromStream(resData.getStream('skin')); //包地址错误

[解决办法]

//1 制作res文件
//......

//2制作包含res文件的dll
library Mydllp;
uses
ExceptionLog,
SysUtils,
Classes;

{$R abc.res}

begin
end.

//3调用
function TResData.getStream(const hName: string): TResourceStream;
var
Stream: TResourceStream;
MyJpg: TJpegImage;
resDll: THandle;
begin
resDll := LoadLibrary(PChar(RESDLL_NAME)); //RESDLL_NAME为Mydllp.dll文件, 直接res文件加载不了
try
Stream := TResourceStream.Create(resDll, hName, RT_RCDATA);
Result:=Stream;
finally
FreeLibrary(resDll);
end;
end;



读书人网 >.NET

热点推荐