怎么把一些图象包含在资源dll 中?(50分)

  • 主题发起人 主题发起人 vericky
  • 开始时间 开始时间
V

vericky

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么把位图包在资源dll中,然后在程序中调用?
 
搜索一下吧。或者找本书。
 
首先创建一个WIN32 DLL工程,不是MFC的DLL,然后创建一个资源文件 *.RC,
添加到资源DLL的工程中去。然后添加一个初始化DLL的原文件。
#include <windows.h>
extern "C"
BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID )
{
return 1;
}

这是纯资源DLL所必须需的代码,保存这个文件为*.CPP。编译这个资源DLL。

在应用程序显示的调用这个DLL,使用LoadLibrary函数装入资源DLL,
FindResource和LoadResource来装入各种资源,或者使用下列的特定的资源装入函数:

FormatMessage
LoadAccelerators
LoadBitmap
LoadCursor
LoadIcon
LoadMenu
LoadString
当资源使用结束,你的应用程序须调用FreeLibrary函数来释放资源。

下面就讲一下如何调用编写好的资源DLL
首先在应用程序中声明一个DLL的句柄,HINSTANCE m_hLibrary;
在OnCreate( )函数中调用LoadLirbrary( ),在OnDestory( )中调用FreeLibrary()。
 
好像用delphi有点问题LoadBitmap不报错,但返回,0 ,真是奇怪,是不是bug,不太清楚!
 
LOADBITMAP是正儿八经的函数,当然不会报错,你是不是把ID搞错了,所以返回0了
 
先用delphi 带的 workshop 作一个。res的资源
再建一个dll工程,把资源加入工程 {$R res.res}
再编译就行了。
 
在工程文件里导入一个*.rc文件,文件的内容可以是:
Bitmap1 Bitmap "C:/Bitmap1.bmp"

然后在要读取图片的函数中写:
 
资源文件中的位图好像只能支持256色。
 
tonylk : 你好像没写完是么?

然后该怎么在程序里调用这些位图呢? ?
 
哈,我也来看一下,解决啦可不可以加点分?
有以下几个步骤
1:做一个.rc文件,可以用记事本做好后改名,里面条目范例如下
1 bitmap "3.bmp"
2 bitmap "4.bmp"
"1","2"为往后读取设下的标识符号
2:将.rc转化为.res文件
运行resource workshop4.5然后单击file->open project...加载.rc,
然后单击file->save file as...将.rc另存为.res
3:将资源格式转换为32位的资源
运行image editor然后单击file->open..加载.res,然后save,将原来的16位
资源文件转化为32位的资源文件格式
4:将资源文件加入.dll中
运行delphi单击file->new....在New items中单击dll项目,加入{$R .res},当然
.res必须和该项目在同一目录下,然后保存为haha.dpr
单击project->build haha
5.加载和释放.dll我就不说啦,书有的是啦,要不然,我口水都快干啦:)
hello:=loadlibrary('haha.dll');
6.运用haha.dll中的图片
speedbutton1.glyph.handle:=loadbitmap(hello,pchar(1));
哈哈,应该知道"1"的用处吧,如果还不懂,我也没办法啦:)))
 
参考 :
http://www.delphibbs.com/delphibbs/dispq.asp?lid=231849
http://www.delphibbs.com/delphibbs/dispq.asp?lid=147070
 
接受答案了.
 
后退
顶部