文档章节

学习使用资源文件[11] - DLL 中的资源文件

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 348
阅读 7
收藏 0

本例将把一张 bmp 图片, 以资源文件的方式嵌入 dll, 然后再调用.

第一步: 建一个 DLL 工程, 如图:


然后保存, 我这里使用的名称都是默认的.

第二步: 建一个资源原文件, 如图:


编辑内容如下(路径中的文件一定要存在):
img1 BITMAP "c:\temp\test.bmp"

然后, 取个名(后缀须是 rc, 我这里取名为 Res.rc), 保存在工程目录下.

第三步: 在 DLL 工程中添加这个资源原文件, 如图:


此时, 工程源文件中会添加一句: {$R 'Res.res' 'Res.rc'}, 我们需要的源文件这样即可: library Project1; {$R 'Res.res' 'Res.rc'} begin end. 然后 Ctrl+F9 编译; 此时在工程目录下会生成我们需要的 Project1.dll.

第四步: 把刚才的 Project1.dll 文件复制到 c:\temp 下.
这样过会我们可以通过 c:\temp\Project1.dll 找到这个文件. 至此 DLL 制作完毕.

第五步: 重新建一个 VCL Forms Application 工程, 代码如下:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
var
  h: THandle;
  bit: TBitmap;
begin
  h := LoadLibrary('c:\temp\Project1.dll'); {载入 DLL}

  bit := TBitmap.Create;
  bit.LoadFromResourceName(h, 'img1');      {提取资源}

  Canvas.Draw(10, 10, bit);                 {在窗体上绘制图片}

  FreeLibrary(h);                           {载卸 DLL}
  bit.Free;
end;

end.

 
 
 
 
 

 

 

  
//效果图:


本文转载自:http://www.cnblogs.com/del/archive/2008/02/15/1069861.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
dll文件

2016年9月3日11:35:42dll文件:DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Win...

anlve
2016/11/15
3
0
Globalization & Resources

http://blog.csdn.net/etmonitor/ .NET系统学习----Globalization & Resources l 前言 l 了解资源文件 l 创建资源文件 l 在程序中使用资源文件 l 资源文件的命名和部署 l 参考 前言: 在学习...

晨曦之光
2012/03/09
94
0
海莲花APT组织最新攻击样本分析

  0×1 概况   海莲花(OceanLotus)也叫APT32或APT-C-00,是一个长期针对中国及其他东亚国家(地区)政府、科研机构、海运企业等领域进行攻击的APT组织。近日腾讯御见威胁情报中心捕获到...

FreeBuf
05/02
0
0
模块句柄(实例句柄)和句柄的区别

看过windows核心编程的都知道有很多概念。同时如果你不只对windows有所了解,对linux mac等 *unix操作系统也有所了解的话。可能会出现有的东西都重合,而有的没有。这里说下win下句柄概念。 ...

土匪猿
05/15
0
0
[16]Windows PowerShell DSC学习系列---基于Class风格定制DSC资源?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chancein007/article/details/55047667 前面的章节介绍了,[15]Windows PowerShell DSC学习系列---基于.NET ...

朱清云的技术博客
2017/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
1
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部