分类: Windows平台
2014-04-03 09:43:02
目的:将图片,图标等存入 DLL中,然后在其他程序中调用
本文示例是将bitmap文件添加到dll中然后在dll中调用
第一步:建立DLL文件
步骤:
1 点击菜单-文件-新建项目-项目类型选择Win32-模版选择Win32项目。
2 在向导中应用程序类型选择DLL,附加选项选择空
3添加资源文件,在解决方案中右键点击资源文件,添加-资源,在添加资源对话框中,新建或者添加想要添加的文件
4添加之后编译出现如下错误
error LNK2001: 无法解析的外部符号
解决方法:
点击菜单上的项目 -属性- 配置属性 -高级-无入口点 选择"是(/NOENTRY)"
PS: VS2010的这个选顶在 菜单上的项目 -属性- 配置属性 - 链接器 -高级-无入口点 选择"是(/NOENTRY)"
5 编译生成DLL文件
在这里并不需要添加WinMain函数之后编译。生成的DLL的文件的名字是mydll.dll
第二步:在程序中调用
1新建一个对话框工程DLLTest
2在DLLTest 工程中的resource.h文件中,添加dll中图片文件的ID
例如#define IDB_BITMAP_BACKGROUND 7777 //7777是我自定义的ID
3为按钮添加图片,设置按钮的Bitmap属性为true,为按钮添加一个控件变量m_Button_Test
为按钮事件添加如下代码
HMODULE hModule = LoadLibrary(TEXT("mydll.dll"));
if(!hModule)
return;
HBITMAP hBitmap = LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP_BACKGROUND));
m_Button_Test.SetBitmap(hBitmap);
FreeLibrary(hModule);
4编译生成DLLTest.exe文件,运行DLLTest.exe,点击按钮按钮就载入了图片
mydll项目在VC++2005 win32项目下调试通过
DLLTest在VC++2005 MFC Dialog Unicode下调试通过
另外,下面是已经试验成功的把swf视频从资源创建文件的过程:
1、加载 swf 文件到资源,是自定义资源,命名时要加双引号,比如下面的代码的自定义资源名称为: “swf”
2、在初始化函数里添加如下代码,即可以指定位置创建一个 swf 文件:
CString strType = L"swf";
LPCTSTR Name = MAKEINTRESOURCE(IDR_SWF1);
HRSRC res = FindResource(NULL,Name,strType);
HGLOBAL gl = LoadResource(NULL,res);
LPVOID lp = LockResource(gl);
CString strFileName = L"C:\\Temp.swf";
HANDLE fp = CreateFile(strFileName,
GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
DWORD a;
if(!WriteFile(fp,lp,SizeofResource(NULL,res),&a,NULL))
return FALSE;
CloseHandle(fp);
FreeResource(gl);
转: