Question

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!

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;
}
Était-ce utile?

La solution

Il semble être un bug dans le MFC comme décrit et confirmé ici . fixe dans Visual studio 2012 RTM.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top