我想把bmp图像放在dll中,然后再用程序调用,如何做呢?请高手指点

Robert10 2005-08-11 05:24:24

我的主程序:
CBitmap cBitmap;
cBitmap //加载dll中的资源位图文件 这部分如何写?
dll中调用,和主程序中直接调用资源,有速度上的差别吗?
我希望速度很快是不是应该用静态连接库?

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


AFX_MANAGE_STATE(AfxGetStaticModuleState());

}
问题多了点,还请指教
小弟初学dll,万分感谢,请大哥指点。
...全文
116 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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有这个资源
回复
younggle 2005-08-12
DLL中提供一个接口,以便返回bmp图像的句柄。
然后在主程序中调用这个接口就可以了。
回复
zhangnanonnet 2005-08-12
添加在资源中,然后编写一个函数输出这个资源的指针不就可以了
回复
DentistryDoctor 2005-08-12
http://community.csdn.net/Expert/topic/3296/3296255.xml?temp=.403927
回复
liutaoxwl 2005-08-12
BOOL CMyApp::InitInstance()
{
//Default Appwizard code.
HINSTANCE hRes = NULL;
hRes= LoadLibrary("ResourceD.dll");
if(hRes)
AfxSetResourceHandle(hRes);
//Rest of wizard code
return CWinApp::InitInstance();
}
回复
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
回复
lixiaosan 2005-08-11
AfxGetResourceHandle();
回复
flyelf 2005-08-11
HBITMAP hBmp = ::LoadBitmap(hResDll, "bmpname");
回复
thisisll 2005-08-11
我以前做过一个操作BMP的DLL
做法是NEW了后传递指针
进行操作

关于速度
我也想知道
回复
相关推荐
发帖
进程/线程/DLL
创建于2007-09-28

1.5w+

社区成员

VC/MFC 进程/线程/DLL
申请成为版主
帖子事件
创建了帖子
2005-08-11 05:24
社区公告
暂无公告