读取并创建资源文件

来源:互联网 发布:fs2you for mac 编辑:程序博客网 时间:2024/05/18 00:47
在许多情况下开发人员需要把文件保存到资源中并的运行时创建到特定的位置,以下代码可以帮你做到:   //以下代码来自TZ MFC.NET Primer 1.01,访问 www.apptemplate.com 获得更多代码和信息 //尊重版权,才能振兴中国软件 CtstApp::CreateFileFromResource(LPCTSTR lpszResourceName, LPCTSTR lpszType, LPCTSTR lpszTargetName) {      ASSERT(lpszResourceName != NULL);        if(lpszTargetName==_T(""))return false;      // determine location of the binary resource in resource fork      HINSTANCE hInst = AfxFindResourceHandle(lpszResourceName, lpszType);        HRSRC hRsrc = ::FindResource(hInst, lpszResourceName, lpszType);        // If failed, try instance handle      if (hRsrc == 0)          hRsrc = ::FindResource(hInst = AfxGetInstanceHandle(), lpszResourceName, lpszType);        if (hRsrc == NULL)          return false;        HGLOBAL hData = LoadResource(hInst, hRsrc);      if (hData == NULL)          return false;        DWORD dwSize = SizeofResource(hInst, hRsrc);      LPBYTE pData = (LPBYTE) LockResource(hData);      CFile m_File;      CFileException e;        if( !m_File.Open( lpszTargetName, CFile::modeCreate | CFile::modeWrite, &e ) )      {          #ifdef _DEBUG          afxDump << "File could not be opened " << e.m_cause << "/n";          #endif          UnlockResource(hData);          FreeResource(hRsrc);          return false;      }      else      {          m_File.Write(pData,dwSize);          m_File.Close();      }      UnlockResource(hData);      FreeResource(hRsrc);        return true; }   参数说明: lpszResourceName 资源名称,使用字符串的方式标定ID值,如” config.xml” lpszType 资源类型,如”ICON”,”Jpg”,”XML” lpszTargetName 目标文件名称,如”AppConfig.xml”   调用示例: CreateFileFromResource(_T("config.xml"),_T("xml"),_T("AppConfig.xml"));
原创粉丝点击