首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

资源文件有一个vcl skin的一个皮肤,在程序中如何动态调用

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

资源文件有一个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;



热点排行