把资源转化成dll,目的是为了不让别人轻易的得到资源,是一种保护资源的一种方式。
创建DLL
1.创建DLL项目ResVideo:新建win32项目,选择 DLL,完成。
2.添加资源文件ResVideo.rc,
在resource.h文件中添加资源宏:
#define IDR_SWF_TEST 600
#define IDR_SWF_CHUNTIAN 601
#define IDR_SWF_FEIJI 602
#define IDR_SWF_HUOJIAN 603
#define IDR_SWF_SHENGLI 604
#define IDR_SWF_SHIBAI 605
#define IDR_SWF_SHUNZHI 606
#define IDR_SWF_ZHADAN 607
在ResVideo.rc文件中添加资源:其路径要存在
IDR_SWF_TEST SWF "ResVideo\\test.swf"
IDR_SWF_CHUNTIAN SWF "ResVideo\\春天.swf"
IDR_SWF_FEIJI SWF "ResVideo\\飞机.swf"
IDR_SWF_HUOJIAN SWF "ResVideo\\火箭.swf"
IDR_SWF_SHENGLI SWF "ResVideo\\胜利.swf"
IDR_SWF_SHIBAI SWF "ResVideo\\失败.swf"
IDR_SWF_SHUNZHI SWF "ResVideo\\顺子.swf"
IDR_SWF_ZHADAN SWF "ResVideo\\炸弹.swf"
使用DLL
1.添加包含头文件:#include "../ResVideo/resource.h"
2.主要函数:
void LoadSWF(int resourceID)
{
HMODULE hModule = LoadLibrary(L"ResVideo.dll");//注意其路径
if (hModule == NULL)
{
return;
}
HRSRC res=FindResource(hModule,MAKEINTRESOURCE(resourceID),L"SWF");
HGLOBAL gl=LoadResource(hModule,res);
LPVOID lp=LockResource(gl);
if (res == NULL || gl == NULL || lp == NULL)
{
return;
}
char* fileName="C:\\Windows\\System32\\temp.swf";
HANDLE fp=CreateFileA(fileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
if (fp == INVALID_HANDLE_VALUE)
{
return ;
}
DWORD size=0;
if (!WriteFile(fp,lp,SizeofResource(hModule,res),&size,NULL))
{
return ;
}
CloseHandle(fp);
FreeResource(gl);
}
3.以资源宏为参数来使用资源。
参考 VC中利用FLASH制作图声并茂的动画程序