把一些数据文件作为资源编译到exe文件中,在程序中用一些函数来读取这些数据文件
因为很多函数貌似只提供了从硬盘上读取文件的参数而不能从buffer中读取(比如CHtmlView中的Navigate2,还有MSXML中的一些函数),所以以前的做法一直是先把数据文件从资源中提取出来,写到Temp目录中再调用函数读取请问有没有一种简便方法使这些标准函数直接从资源中读取文件而不需要先写到硬盘上?呵呵,不知道有没有表达清楚,谢谢啦!

解决方案 »

  1.   

    1\内置一个mini webserver,用http协议输出
    或者:2,自己实现SetDoc(...),SetBody(...)等方法如果下为一个 SetDoc方法,供参考void CWebBrowser2::SetDoc(LPCTSTR psz)
    {
    IDispatch* pDisp = GetDocument();
    if(pDisp == NULL) return ;  
    IHTMLDocument2   *   phmDoc2;   
    HRESULT s=pDisp->QueryInterface(IID_IHTMLDocument2,(void  **)&phmDoc2);
    if(S_OK != s) return ; SAFEARRAY *psa =::SafeArrayCreateVector(VT_VARIANT, 0, 1);
    if (psa == NULL) return; VARIANT *variant = NULL;
    HRESULT hr = ::SafeArrayAccessData(psa,(LPVOID *)&variant);
    if (FAILED(hr)) return;
    variant->vt = VT_BSTR;
    CString str(psz);
    variant->bstrVal = str.AllocSysString();
    SafeArrayUnaccessData(psa); phmDoc2->clear();
    phmDoc2->write(psa);
    phmDoc2->close(); return ;
    }
      

  2.   

    谢谢LS,这种方法应该仅限于Navigate函数吧,那如果希望所有文件读取函数都适用该怎么做呢?
      

  3.   

    用 Windows API 试下:
    LoadLibrary >> LoadResource >> FindResource
      

  4.   

    不同的协议对于流数据有不同的要求,上帖是专门对于http应用的
    处理文件,可以在网上找一个类似 CxFile的类(内存文件管理类),在内存中处理数据流,比如图片、压缩编码之类的