我一直在使用以下代码来获取 IWebBrowser2 控件内容的元文件矢量图像,如下所示:
IHTMLElement* pDocBody;
IHTMLDocument2* pDoc;
……
pDoc->get_body(&pDocBody); // 获取 IHTMLDocument2 的正文元素
pDocBody->get_parentElement(&pEleParent); pEleParent->QueryInterface(IID_IHTMLElement2,(void**)&pRenderEle2); // 获取要渲染的元素
pRenderEle2->QueryInterface(IID_IHTMLElementRender,(void**)&pRender); // 获取渲染接口
HDC hMetaDC=::CreateEnhMetaFile(hRefDC,PictFile,&MetaRect,NULL); // 获取直流
hr = pRender->DrawToDC(hMetaDC);
上面的代码与 IE6、IE7、IE8 完美配合,为浏览器内容提供矢量图像。但是上面的 DrawToDC 调用因 IE9 的 Beta 版本(在 Windows 7 32 位上测试)而失败,错误代码为:0x8007000e。
我曾尝试使用 WM_PRINT 和其他绘图方法,但我只能获取位图图像,而不是矢量图像。
知道为什么 DrawToDC 在上面的代码中因 IE9 失败,以及是否有任何其他方法可以使用 IE9 获取矢量图像。
谢谢, Subhash
谢谢,我担心可能是这种情况。你知道是否有一种方法可以暂时将 IE9 渲染切换到 GDI 模式。我希望这会降低渲染质量/效率,我应该能够在我当前的应用程序中使用它。