我想把bmp图像放在dll中,然后再用程序如何调用

Robert10 2005-08-11 05:21:24
我想把bmp图像放在dll中,然后再用程序如何调用
我的主程序:
CBitmap cBitmap;
cBitmap //加载dll中的资源位图文件 这部分如何写?

dll中:
静态dll,资源文件名称为 IDB_BITMAP1,IDB_BITMAP2
代码部分如何写?
extern "C"
_declspec(dllexport) void loadbmp()
{


AFX_MANAGE_STATE(AfxGetStaticModuleState());

}
小弟初学dll,万分感谢,请大哥指点。
...全文
269 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
booklove 2006-02-15
  • 打赏
  • 举报
回复
把hand.dll项目的resource.h文件中的IDB_BITMAP1的定义,拷到你调用项目的相应文件中。
flyelf 2006-02-14
  • 打赏
  • 举报
回复
IDB_BITMAP1是定义在hand.dll的resource.h中的,因此,还需要包含hand.dl的resource.h,或者自己添加IDB_BITMAP1的定义
Robert10 2005-08-15
  • 打赏
  • 举报
回复
hExe = LoadLibrary("hand.dll");
if (hExe == NULL)
{
ErrorHandler("Could not load dll.");
}

hRes = FindResource(hExe, MAKEINTRESOURCE(IDB_BITMAP1), RT_BITMAP);
if (hRes == NULL)
{
ErrorHandler("Could not locate dialog box.");
}


hResLoad = LoadResource(hExe, hRes);
.....

我这么做了可是提示错误:IDB_BITMAP1未标识,怎么回事呢?我的dll有这个资源
Seu_why 2005-08-12
  • 打赏
  • 举报
回复
都是星级高手!受教了
goodboyws 2005-08-12
  • 打赏
  • 举报
回复
HANDLE ResDllHandle=LoadLibrary(_T("MyRes.dll"));
AfxSetResourceHandle((HINSTANCE)ResDllHandle);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
lixiaosan 2005-08-12
  • 打赏
  • 举报
回复
把你的dll资源用LoadLibrary导入后,
用FindResource循环查找
DentistryDoctor 2005-08-12
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3296/3296255.xml?temp=.9332697
DentistryDoctor 2005-08-12
  • 打赏
  • 举报
回复
static AFX_EXTENSION_MODULE ResouceDLL = { NULL, NULL }
BOOL CXApp::InitInstance()
{
// Get the resource DLL instance
if (!AfxInitExtensionModule(ResouceDLL, hResourceModule))
return 0;
new CDynLinkLibrary(ResouceDLL);

}
int CGenericMFCApp::ExitInstance()
{
AfxTermExtensionModule(ResouceDLL);
return CWinApp::ExitInstance();
}
这样我们就可以在应用程序中安全的使用DLL中的资源了,就好比EXE中的一样
teli_eurydice 2005-08-11
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/_core_Create_a_Resource.2d.Only_DLL.asp


Visual C++ 概念:添加功能

创建纯资源 DLL
纯资源 DLL 是仅包含资源(如图标、位图、字符串和对话框)的 DLL。使用纯资源 DLL 是在多个程序之间共享同一组资源的好方法。提供其资源被针对多种语言进行本地化的应用程序也是一种好方法(请参见 MFC 应用程序中的本地化资源:附属 DLL)。

若要创建纯资源 DLL,请创建一个新的 Win32 DLL(非 MFC)项目,并将资源添加到此项目。

在“新建项目”对话框中选择“Win32 项目”,并在“Win32 项目向导”中指定 DLL 项目类型。
为 DLL 创建一个包含资源(如字符串或菜单)的新资源脚本,并保存该 .rc 文件。
在“项目”菜单上单击“添加现有项”,并在项目中插入这个新的 .rc 文件。
指定 /NOENTRY 链接器选项。/NOENTRY 防止链接器将 _main 引用链接到 DLL 中;此选项是创建纯资源 DLL 所必需的。
生成 DLL。
使用纯资源 DLL 的应用程序应调用 LoadLibrary 来显式链接到 DLL。若要访问资源,请调用一般函数 FindResource 和 LoadResource,这两个函数对任何类型的资源都有效,或调用下列资源特定的函数之一:

FormatMessage
LoadAccelerators
LoadBitmap
LoadCursor
LoadIcon
LoadMenu
LoadString
使用完资源后,应用程序应调用 FreeLibrary。

您想进一步了解什么?
使用资源
请参见
DLL
vcmute 2005-08-11
  • 打赏
  • 举报
回复

hExe = LoadLibrary("hand.dll");
if (hExe == NULL)
{
ErrorHandler("Could not load dll.");
}

hRes = FindResource(hExe, MAKEINTRESOURCE(IDB_BITMAP1), RT_BITMAP);
if (hRes == NULL)
{
ErrorHandler("Could not locate dialog box.");
}


hResLoad = LoadResource(hExe, hRes);
.....

19,472

社区成员

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

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