CMemFile是从CFile派生而来,可以使用CFile的Read、Write等成员函数进行读写。

解决方案 »

  1.   

    CMemFile 从 CFile 继承而来,所以大部分的操作都可以。但对于你的要求,好像创建 CMemFile 多余了一步。简单的情况下,CHTMLView 只能显示真正的磁盘文件。如果要显示内存块中的 HTML 内容,可以参考下面的代码(假定你已经用到了 #import <mshtml.dll>):void CHTMLDocView::ShowDefaultPage()
    {
    MSHTML::IHTMLDocument2Ptr ptrDoc;
    LPCTSTR sz = _T("<html><head><title>test</title></head><body><h1>In memory HTML document</h1></body></html>");
    HGLOBAL hMem;
    LPSTREAM pStream;
    IPersistStreamInit *pPersistStream; ptrDoc = GetHtmlDocument();
    hMem = ::GlobalAlloc(GPTR, (lstrlen(sz) + 1) * sizeof TCHAR);
    lstrcpy((LPTSTR)hMem, sz);
    HRESULT hr = ::CreateStreamOnHGlobal(hMem, TRUE, &pStream);
    if(FAILED(hr))
    {
    ::GlobalFree(hMem);
    return;
    }
    hr = ptrDoc.QueryInterface(IID_IPersistStreamInit, &pPersistStream);
    if(pPersistStream == NULL)
    {
    pStream->Release();
    return;
    }
    hr = pPersistStream->InitNew();
    hr = pPersistStream->Load(pStream);

    hr = pPersistStream->Release();
    pStream->Release();
    }
      

  2.   

    谢谢,您给的例子复杂了些。
    正如您所说,CHTMLView 只能显示真正的磁盘文件。那我们是否可以让它读内存里的文件哪,
    请大侠们帮忙。