纯资源DLL制作及调用

DLL是仅包含资源(如图标、位图、字符串和对话框)的DLL。使用纯资源DLL是在多个程序之间共享同
一组资源的好方法。提供其资源被针对多种语言进行本地化的应用程序也是一种好方法。
若要创建纯资源DLL,请创建一个新的Win32DLL(非MFC)项目,并将资源添加到此项目。
在“新建项目”对话框中选择“Win32项目”,并在“Win32项目向导”中指定DLL项目类型。
为DLL创建一个包含资源(如字符串或菜单)的新资源脚本,并保存该.rc文件。如果该.rc文件包含位图用记事
本打开它,可以看到下面这样的一段
DIB_BKGD_HFBITMAP\"bkgd_**.bmp\"
DIB_BKGD_GTBITMAP\"bkgd_***.bmp\"
DIB_BKGD_BFBITMAP\"bkgd_*****.bmp\"
这些就是针对位图的申明,将相应的位图添加到这个里面就行了。
在“项目”菜单上单击“添加现有项”,然后在项目中插入这个新的.rc文件。
指定/NOENTRY链接器选项。/NOENTRY防止链接器将_main引用链接到DLL中;此选项是创建纯资源DLL所
必需的。
生成DLL。
使用纯资源DLL的应用程序应调用LoadLibrary来显式链接到DLL。若要访问资源,请调用一般函数
FindResource和LoadResource,这两个函数对任何类型的资源都有效,或调用下列资源特定的函数之一:
FormatMessage
LoadAccelerators
LoadBitmap
LoadCursor
LoadIcon
LoadMenu
LoadString
使用完资源后,应用程序应调用FreeLibrary。
下面部份是说明一下资源中的BMP如何动态加载并显示
hmodule=LoadLibrary(\"ExtendDLL.dll\");
HDCm_hdcMem;
m_hdcMem=CreateCompatibleDC(hdc);
BITMAPbm;
RECTrect;
HBITMAPhBitmap=LoadBitmap(hmodule,\"DIB_BKGD_HF\");//MAKEINTRESOURCE(IDB_BITMAP1)
//HBITMAPhBitmap=(HBITMAP)LoadImage(hmodule,\"DIB_BKGD_HF\",IMAGE_BITMAP,0,0,LR_DEFAU
LTSIZE);
GetObject(hBitmap,sizeofBITMAP,&bm);
posted @ 2009-10-17 19:20  荷包蛋  阅读(1378)  评论(0编辑  收藏  举报