???????资源DLL中BMP图像的资源名称在哪里设定,我如何在用::LoadBitmap()函数调用?

goodboy2000 2000-11-22 01:15:00
我按照一位大虾写的:纯资源DLL的编写
//---------------------------------------------------------------
下面的例子是一个纯资源DLL的源程序
纯资源的DLL就是只包含资源的DLL,例如:图标,位图,字符串,声音,视频,对话框等。使用纯资源DLL可以节约可执行文件的大小,可以被所有的应用程序所共享,从而提高系统性能。纯资源DLL的编写比普通的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()。
//-------------------------------------------------------------
可是我在创建资源DLL中没有找到在哪里设置资源名称,使得我在调用LoadBitmap()时,
HINSTANCE hMod;
VERIFY(hMod=::LoadLibrary ("Resource.dll"));
if(hMod==NULL)
MessageBox("加载动态链接库失败!");
HBITMAP hBmp=::LoadBitmap(hMod,"13-1.bmp");
DWORD err=GetLastError();
无法调用指定的BMP资源,err=1814(找不到映像文件中指定的资源名)。请大虾们指点一二,多谢!
...全文
179 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rockswang 2000-11-23
  • 打赏
  • 举报
回复
Hi goodboy2k, 办法还是有的,可以用exescope来得到dll中的位图id号。
忘了从哪里下载的了,想要的话email我吧,rocks_lee@263.net.
btw, 很爽的工具哟,不但可以察看,还可以编辑,输入,输出……
rockswang 2000-11-23
  • 打赏
  • 举报
回复
Hi goodboy2k, 办法还是有的,可以用exescope来得到dll中的位图id号。
忘了从哪里下载的了,想要的话email我吧,rocks_lee@263.net.
btw, 很爽的工具哟,不但可以察看,还可以编辑,输入,输出……
goodboy2000 2000-11-22
  • 打赏
  • 举报
回复
系统不让收回分,只好都给rocks_lee了,不过我还是得谢谢rocks_lee!
goodboy2000 2000-11-22
  • 打赏
  • 举报
回复
同样内容的贴子已经解决,我只能给rocks_lee加一些分。其他分数收回,rocks_lee你没有意见吧?如果各位觉得不合理,只要大家说的有道理,我把回收的分放出去!
ab 2000-11-22
  • 打赏
  • 举报
回复
在资源DLL里面指定位图ID号时,写成"BBBB",就行了,带引号,在用户程序里面写:
HBITMAP hBmp=::LoadBitmap(hMod, "BBBB");
我在自己的程序里面就是这样写的,没有任何问题。
adone 2000-11-22
  • 打赏
  • 举报
回复
你只能这样!没有更方便的方法了,你快点儿给他吧
嘿嘿。
goodboy2000 2000-11-22
  • 打赏
  • 举报
回复
十分感谢rocks_lee,方法可行!只是麻烦了一点,如果资源库不是我自己建的,我就没办法了。不是我不想给分,我希望有其他更方便的方法。如果连两日内没有其他方法,分数一定给rocks_lee。保证!
rockswang 2000-11-22
  • 打赏
  • 举报
回复
不要用字符串来命名bitmap, 用ID好了。
记住那个ID对应的数字(用view->resource symbols看看),
比如那个ID是101:
用::LoadBitmap(hMod, MAKEINTRESOURCE(101));
就可以了。
我将带领大家来系统学习Windows的窗口编程,包括消息、窗口、GDI绘图、游戏开发等。本课程比较基础,非常适合初学者入门,读者可以边学习边实践。具体的章节目录和课程内容如下所示:---------------------------------------------Windows游戏编程系列之1:GUI界面编程及游戏入门实战1、Windows创建第一个窗口 WinMain入口函数 5进行Windows编程的调试手法 6窗口从哪里来? 7窗口编程的步骤 7窗口编程需要的主要结构 8窗口编程需要的主要API 92、Windows的窗口过程与消息机制 如何留住窗口? 121)Windows的消息与消息循环 142)消息处理函数与常用消息 17)Windows的窗口过程函数 19 3、GDI编程之设备上下文 1)GDI的通用编程框架 222)GDI的绘图步骤 253)GDI获取设备句柄 254、GDI编程之绘制几何图形 画点、线 28颜色COLORREF 29矩形 29画圆、饼图、弦图 305、GDI编程之自定义画笔画刷画笔简介 32画刷简介 33画笔案例 33画刷案例 346、GDI编程之绘制文字 DrawText函数 35TextOut 函数 (wingdi.h) 36CreateFont函数 37绘制文本案例 377、GDI编程之绘制位图 位图简介 381)在资源添加位图资源 392)从资源加载位图: LoadBitmap 393)创建一个与当前DC相匹配的DC(内存DC) 394)将bitmap放入匹配的DC:SelectObject 405)成像(1:1 比例 ) 406)取出位图 407)释放位图 418)释放匹配的DC 41绘制位图案例 41   8、Windows鼠标键盘消息 一、键盘消息 421、键盘消息 422、消息参数: 423、消息的使用: 424、键盘消息的案例代码 43二、鼠标消息 441、基本鼠标消息 442、双击消息 443、滚轮消息 454、不响应双击消息 45 9、Windows定时器消息 定时器消息介绍 47创建定时器 47关闭定时器 47定时器消息案例代码 4810、GDI游戏之跳舞动画 11、GDI游戏之走路动画 12、GDI贪吃蛇游戏实战  

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧