2011-09-09 5 views
0

Ce code a fonctionné pour IE8 et plus tôt. Pour IE9, il semble que IPersistStreamInit :: Save() retourne E_NOTIMPL. Toute aide est grandement appréciée!IPersistStreamInit :: Save() ne fonctionne pas dans IE9?

HRESULT CHtmlCtrl::GetDocumentHTML(CString& strHTML) const 
{ 
    HRESULT hr = E_NOINTERFACE; 

    CComPtr<IHTMLDocument2> spHTMLDocument; 
    GetHtmlDocument()->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&spHTMLDocument); 
    if (spHTMLDocument) 
    { 
     CComQIPtr<IPersistStreamInit> spPSI; 
     spPSI = spHTMLDocument; 
     if (spPSI) 
     { 
      CStreamOnCString stream; 
      hr = spPSI->Save(static_cast<IStream*>(&stream), FALSE); 
      if (hr == S_OK) 
      { 
       if (!stream.CopyData(strHTML)) 
        hr = E_OUTOFMEMORY; 
      } 
     } 
    } 

    return hr; 
} 

Répondre

1

semble être un bug dans le MFC comme décrit et confirmé here. Fixed dans Visual Studio 2012 RTM.