捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
续《从DLL中获取VCLSkin皮肤的演示程序》谈DLL制作方法
关键字:VCLSkin DLL 皮肤 SkinBag 资源 TResourceStream
来 自:原创
平 台:Win9x,Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:初级 完成时间:2005/11/5
发布者:coolslob 发布时间:2005/11/5
编辑器:DELPHI7 语  种:简体中文
分 类:资源 下载浏览:1/16563
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
无图片
前些天鄙视过了http://www.delphi**.com/down_view.asp?id=2826,大快人心。
在发布了《 从DLL中获取VCLSkin皮肤的演示程序》之后,一些网友要求将DLL的制作方法公布,苦于前些天工作忙乎。

起初本不想公布这部分代码,并不是我要藏私,因为这个作实实在简单,我以为大家看了之后都可以想象出其中的“制作工艺”。现在只好多些一举了:)

DLL全文件代码如下:

library SkinBag;

uses
  SysUtils,
  Classes;

{$R *.res}
{$R SkinBagPack.RES}

function GetSkin(ASkinName: PChar; var Stream: TMemoryStream): Boolean;stdcall;
var
  F: TResourceStream;
begin
  try
    F := TResourceStream.Create(HInstance, ASkinName, 'Skin');
    try
      Stream.CopyFrom(F, F.Size);
    finally
      F.Free;
      F := nil;
    end;
    Result := True;
  except
    Result := False;
  end;
end;

function GetSkinsName(var Strs: TStrings): Boolean;stdcall;
var
  F: TResourceStream;
  F1: TStringStream;
begin
  try
    F := TResourceStream.Create(HInstance, 'SkinsName', 'TEXT');
    F1 := TStringStream.Create(');
    try
      F1.CopyFrom(F, F.Size);
      Strs.Text := F1.DataString;
    finally
      F.Free;
      F := nil;
      F1.Free;
      F1 := nil;
    end;
    Result := True;
  except
    Result := False;
  end;
end;

exports  
  GetSkin,
  GetSkinsName;

begin
end.


RC文件的创建,例如:
skin0297 Skin skin0297.skn
skin0316 Skin skin0316.skn
skin0338 Skin skin0338.skn
skin0357 Skin skin0357.skn
skin0368 Skin skin0368.skn
skin0377 Skin skin0377.skn
skin0383 Skin skin0383.skn
SoftSkin Skin SoftSkin.skn
SkinsName TEXT SkinsName.txt

Resource Type为 Skin的表示皮肤。
Resource Type为TEXT表示皮肤列表。
其内容如:
skin0281
skin0297
skin0316
skin0338
skin0357
skin0368
skin0377
skin0383

剩下的工作就是生成res文件,然后编译生成DLL。

作者:CoolSlob
有任何问题或建议请Email至CoolSlob@163.com联系。

《 从DLL中获取VCLSkin皮肤的演示程序》
http://www.2ccc.com/article.asp?articleid=2692
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
续《从DLL中获取VCLSkin皮肤的演示程序》谈…
coolslob 2005/11/5 下+1/浏+16564 评+3
从DLL中获取VCLSkin皮肤的演示程序附 DLL 代…
oiwin 2005/11/3 下+2756/浏+10619 评+8
从DLL中获取VCLSkin皮肤的演示程序
CoolSlob 2005/11/2 下+3044/浏+14733 评+12
相关评论
共有评论3条 当前显示最后3条评论
chuxinzi 2005/12/17 15:16:41
F1 := TStringStream.Create(');

这一句编译不了,是不是缺少点什么啊?  希望能提供  谢谢
cj0000 2006/2/16 10:59:34
缺个单引号
F1 := TStringStream.Create('');
goyo 2006/5/14 15:27:47
其实更好的方法就是做一个类似VC的纯资源动态链接库。
只写这么一句子
library libname;

...

{$R 'Resources name'}

...

然后在需要的地方,LoadLibrary,再用TResourceStream流来读写即可。当然作者的这个办法也是可行的。但是,把这2个函数放这里似乎不是很妥当。
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表