VC++使用纯资源Dll
纯资源 DLL 是仅包含资源(如图标、位图、字符串和对话框)的 DLL。使用纯资源 DLL 是在多个程序之间共享同一组资源的好方法。这种方法也经常用来解决多国语言问题。下面就来介绍下在vs 2005 下如何使用纯资源Dll.
1、新建一个 MFC DLL 项目,设置为 创建规则Dll ,然后打开资源视图,添加一个字符串资源和一个图片资源。然后设置项目属性,
将 配置属性-链接器-高级下的 无入口点选项设为 是(/NOENTRY) , 防止链接器将 _main 引用链接到 DLL 中;此选项是创建纯资源 DLL 所必需的。最后编译项目。
2、再建一个测试项目,把前面 编译的dll拷到项目目录(或将前面的项目添加为引用,这样每次修改了资源dll,不用拷贝)。
代码如下:
1 HMODULE hModule = LoadLibrary("ResourceDll.dll");
2 if (hModule == NULL)
3 {
4 MessageBox("加载资源文件失败!");
5 return true;
6 }
7 char buffer[255];
8 memset(buffer,0,sizeof(buffer));
9 LoadString(hModule,2000,buffer,sizeof(buffer));
10 SetDlgItemText(IDC_STATIC,buffer);
11 HBITMAP hBitmap = LoadBitmap(hModule,MAKEINTRESOURCE(2001));
12
13 if (hBitmap == NULL)
14 {
15 MessageBox("加载图片资源失败!");
16 return true;
17 }
18 ((CStatic*)GetDlgItem(IDC_STATIC_BITMAP))->SetBitmap(hBitmap);
19 FreeLibrary(hModule);
2 if (hModule == NULL)
3 {
4 MessageBox("加载资源文件失败!");
5 return true;
6 }
7 char buffer[255];
8 memset(buffer,0,sizeof(buffer));
9 LoadString(hModule,2000,buffer,sizeof(buffer));
10 SetDlgItemText(IDC_STATIC,buffer);
11 HBITMAP hBitmap = LoadBitmap(hModule,MAKEINTRESOURCE(2001));
12
13 if (hBitmap == NULL)
14 {
15 MessageBox("加载图片资源失败!");
16 return true;
17 }
18 ((CStatic*)GetDlgItem(IDC_STATIC_BITMAP))->SetBitmap(hBitmap);
19 FreeLibrary(hModule);
最终效果如下:
作者:陈 锋
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。