您的位置:首页 > 编程语言 > C语言/C++

[VC++]释放资源文件

2013-04-22 22:54 316 查看
VC++程序中,有时会需要包含有各种各样的资源文件,比如图标、图片还有一些其它的资源文件,如何将这些资源文件导出呢?为了方便,我写了一个函数:

/*
函数功能:释放资源文件

参数说明:DWORD dwResName   指定要释放的资源ID号,如IDR_EXE
LPCSTR lpResType 指定释放的资源的资源类型,如"EXE"
LPCSTR lpFilePathName 指定释放后的目标文件名,如"D:\\Test.exe"

返回值:成功则返回TRUE,失败返回FALSE
*/
BOOL FreeResFile(DWORD dwResName, LPCSTR lpResType, LPCSTR lpFilePathName )
{
HMODULE hInstance = ::GetModuleHandle(NULL);//得到自身实例句柄

HRSRC hResID = ::FindResource(hInstance,MAKEINTRESOURCE(dwResName),lpResType);//查找资源
HGLOBAL hRes = ::LoadResource(hInstance,hResID);//加载资源
LPVOID pRes = ::LockResource(hRes);//锁定资源

if (pRes == NULL)//锁定失败
{
return FALSE;
}
DWORD dwResSize = ::SizeofResource(hInstance,hResID);//得到待释放资源文件大小
HANDLE hResFile = CreateFile(lpFilePathName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);//创建文件

if (INVALID_HANDLE_VALUE == hResFile)
{
//TRACE("创建文件失败!");
return FALSE;
}

DWORD dwWritten = 0;//写入文件的大小
WriteFile(hResFile,pRes,dwResSize,&dwWritten,NULL);//写入文件
CloseHandle(hResFile);//关闭文件句柄

return (dwResSize == dwWritten);//若写入大小等于文件大小,返回成功,否则失败
}


本帖为原创,转帖请说明出处,谢谢合作。

本文地址:http://blog.csdn.net/sonsie007/article/details/8837205
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: