BOOL ReleaseRes(CString strFileName,WORD wResID,CString strFileType)   
{   
// 资源大小
DWORD dwWrite=0; // 创建文件
HANDLE hFile = CreateFile(strFileName, GENERIC_WRITE,FILE_SHARE_WRITE,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if ( hFile == INVALID_HANDLE_VALUE )
{
return FALSE;
} // 查找资源文件中、加载资源到内存、得到资源大小
HRSRC hrsc =  FindResource(NULL, MAKEINTRESOURCE(wResID), strFileType);
HGLOBAL hG = LoadResource(NULL, hrsc);
DWORD dwSize = SizeofResource( NULL,  hrsc); // 写入文件
WriteFile(hFile,hG,dwSize,&dwWrite,NULL);   
CloseHandle( hFile );
return TRUE;   
} ReleaseRes(_T("Lib.Api"),(WORD)IDR_API1,_T("Api"));//为啥写出来的是0字节的文件呢?

解决方案 »

  1.   

    你代码写错了
    HINSTANCE hInstance=GetModuleHandle(NULL);
        
        HRSRC hResInfo = FindResource(hInstance, MAKEINTRESOURCE(ID_MAGICDEL_DLL),
                                      MAKEINTRESOURCE(RC_BINARYTYPE));
        HGLOBAL hgRes = LoadResource(hInstance, hResInfo);
        void *pvRes = LockResource(hgRes);
        DWORD cbRes = SizeofResource(hInstance, hResInfo);    
        HANDLE hFile = CreateFile(filename, GENERIC_WRITE, 0, 0, CREATE_ALWAYS,
                                  FILE_ATTRIBUTE_NORMAL, 0);
        DWORD cbWritten;
        WriteFile(hFile, pvRes, cbRes, &cbWritten, 0);
        CloseHandle(hFile);
      

  2.   

    FindResource  这个的第三个参数是 指定一个资源类型,我想设置的资源类型和MSDN上的比对没有  是一个皮肤文件  我应该如何设置呢?
      

  3.   

    你没好好看我1#的代码,管你什么类型的资源,FindResource的第三个参数写MAKEINTRESOURCE(资源ID)
      

  4.   

    还是空文件啊。 搞不懂!void ReleaseRes(LPCSTR strFileName,WORD wResID,WORD strFileType);
    extern "C" _declspec(dllexport) void __stdcall ReleaseMoudelLibApi()
    {
    ReleaseRes("eApi.Api",IDR_EAPI1,IDR_EAPI1);
    }
    void ReleaseRes(LPCSTR strFileName,WORD wResID,WORD strFileType)   
    {    
    ////////
    HINSTANCE hInstance=GetModuleHandle(NULL); HRSRC hResInfo = FindResource(hInstance,MAKEINTRESOURCE(wResID),
    MAKEINTRESOURCE(strFileType));
    HGLOBAL hgRes = LoadResource(hInstance, hResInfo);
    void *pvRes = LockResource(hgRes);
    DWORD cbRes = SizeofResource(hInstance, hResInfo);
    HANDLE hFile = CreateFileA(strFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS,
    FILE_ATTRIBUTE_NORMAL, 0);
    DWORD cbWritten;
    WriteFile(hFile, pvRes, cbRes, &cbWritten, 0);
    CloseHandle(hFile);

      

  5.   

    strFileType的值是多少?hFile是否取到?确认资源每一个句柄是否都取到了hResInfo,hgRes这些