纯资源DLL创建与使用
作者:木水于(shemney_yang@qq.com)2011/9/16
源码下载地址:http://download.csdn.net/detail/shemny/3607535
1. 创建纯资源DLL
1) 应创建一个新的 Win32 DLL(非MFC)项目.
2) 完成后,指定 [/NOENTRY] 链接器选项,[/NOENTRY]防止链接器将[_main]引用链接到DLL中。
3) 创建一个资源文件 *.RC,添加到资源DLL的工程中去。并添加一个字符资源。如下图所示:
4) 然后添加一个初始化DLL的原文件。
5) 编辑成DLL。
6) 使用方法:
使用纯资源 DLL的应用程序应调用LoadLibrary来显式链接到DLL。若要访问资源,请调用一般函数 FindResource和LoadResource,这两个函数对任何类型的资源都有效,或调用下列资源特定的函数之一:
FormatMessage
LoadAccelerators
LoadBitmap
LoadCursor
LoadIcon
LoadMenu
LoadString
2. 创建一个MFC基于对话框的测试程序。
1) 创建一个测试按钮点击测试按钮获取DLL中的字符串资源。
2) 添加按钮的响应函数,并添加以下代码:
//装载资源
HINSTANCE hRes = NULL;
hRes = LoadLibrary(L"../Debug/Res.dll");
if (NULL == hRes)
{
AfxMessageBox(_T("加载资源失败!"));
return;
}
//使用字符串资源
wchar_t strRes[MAX_PATH];
LoadString(hRes,IDS_TITLE,strRes,MAX_PATH);
AfxMessageBox(strRes)
//释放资源
FreeLibrary(hRes);
//装载资源
HINSTANCE hRes = NULL;
hRes = LoadLibrary(L"../Debug/Res.dll");
if (NULL == hRes)
{
AfxMessageBox(_T("加载资源失败!"));
return;
}
//使用字符串资源
wchar_t strRes[MAX_PATH];
LoadString(hRes,IDS_TITLE,strRes,MAX_PATH);
AfxMessageBox(strRes)
//释放资源
FreeLibrary(hRes);
3) 增加资源的定义,把DLL资源中的定义复制到当前的工程中就可以编译成功了。
4) 加载图片源如下:
//使用图标资源
HICON hIcon = ::LoadIcon(hRes,MAKEINTRESOURCE(IDI_ICON1));
5) 创建对话框方法:
//使用对话框资源
HINSTANCE hResCurrent =AfxGetResourceHandle();
AfxSetResourceHandle(hRes);
CDialog dlg(IDD_DLG_TEST,this);
dlg.DoModal();
AfxSetResourceHandle(hResCurrent);