-
在“新建项目”对话框中选择“Win32 项目”,并在“Win32 项目向导”中指定 DLL 项目类型。
-
为 DLL 创建一个包含资源(如字符串或菜单)的新资源脚本,并保存该 .rc 文件。如果该.rc文件包含位图用记事本打开它,可以看到下面这样的一段
-
DIB_BKGD_HF BITMAP "bkgd_**.bmp"
DIB_BKGD_GT BITMAP "bkgd_***.bmp"
DIB_BKGD_BF BITMAP "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");
HDC m_hdcMem;
m_hdcMem = CreateCompatibleDC(hdc);
BITMAP bm;
RECT rect;
HBITMAP hBitmap = LoadBitmap(hmodule,"DIB_BKGD_HF"); //MAKEINTRESOURCE(IDB_BITMAP1)
//HBITMAP hBitmap = ( HBITMAP )LoadImage( hmodule, "DIB_BKGD_HF",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE);
GetObject( hBitmap, sizeof BITMAP, &bm);
SelectObject( m_hdcMem, hBitmap);
GetClientRect( hWnd, &rect);
//::SetStretchBltMode(hdc,COLORONCOLOR);
//::StretchBlt(hdc, rect.left, rect.top, rect.right, rect.bottom, m_hdcMem, 0, 0, bm.bmWidth, bm.bmHeight,SRCCOPY);
BitBlt(hdc,0,0,bm.bmWidth,bm.bmHeight,m_hdcMem,0,0,SRCCOPY);
ReleaseDC( hWnd, m_hdcMem );
FreeLibrary(hmodule);