想把一个资源文件以二进制方式写在硬盘上,代码如下:
HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_MY1), TEXT("MY1"));
//加载资源
HGLOBAL hGlobal = LoadResource(NULL, hRsrc); 
//锁定资源
LPVOID pBuffer = LockResource(hGlobal); //此处锁定的资源后面需要释放吗?//下面该如何处理呢??? 如何将锁定的资源写入硬盘上的文件中FILE  *p_myfile; //生成的二进制文件指针
Cstring file_path = c:\\myfile.bin;
p_myfile = fopen(file_path,"wb"); //写入文件
fwrite(要写的内容,1,一次写入的长度,p_myfile);
fclose(p_myfile);

解决方案 »

  1.   


      try
      {
        HINSTANCE ghInstApp = AfxGetInstanceHandle();
        HRSRC hRsrc = FindResource(ghInstApp, MAKEINTRESOURCE(IDR_MY1),"MY1");
        ASSERT(hRsrc);
        DWORD len = SizeofResource(ghInstApp,hRsrc); 
        ASSERT(len);
        HGLOBAL hGlobal = LoadResource(ghInstApp,hRsrc);     CFile file(fileName, CFile::modeCreate | CFile::modeWrite);
        file.Write(hGlobal,len);
        file.Close();
      }
      catch(...)
      {
      }
      

  2.   

    上面代码有些错误,改一下即可:
    LPVOID pBuffer = LockResource(hGlobal);
    file.Write(pBuffer,len);
      

  3.   


    再补充下,别忘了::UnlockResource(hGlobal);
      

  4.   

    如果 UnlockResource(hGlobal);语句 忘记了,有什么影响?