DrawToDC在IE9 Web浏览器控件上失败

时间:2010-09-29 17:02:51

标签: render internet-explorer-9

我一直在使用以下代码来获取IWebBrowser2控件内容的图元文件矢量图像,如下所示:

IHTMLElement * pDocBody;

IHTMLDocument2 * pDoc;

... ...

pDoc-> get_body(安培; pDocBody); //获取IHTMLDocument2的body元素

pDocBody-> get_parentElement(安培; pEleParent); pEleParent->的QueryInterface(IID_IHTMLElement2,(无效**)及pRenderEle2); //从

获取要渲染的元素

pRenderEle2->的QueryInterface(IID_IHTMLElementRender,(无效**)及pRender); //获取渲染界面

HDC hMetaDC = :: CreateEnhMetaFile(hRefDC,PictFile,& MetaRect,NULL); //得到DC

hr = pRender-> DrawToDC(hMetaDC);

上面的代码与IE6,IE7,IE8完美配合,为浏览器内容提供矢量图像。但上面的DrawToDC调用失败了IE9的Beta版本(在Windows 7上测试,32位),错误代码为:0x8007000e。

我曾尝试使用WM_PRINT和其他绘制方法,但我只能获取位图图像,而不是矢量图像。

任何想法为什么DrawToDC在上面的代码中使用IE9失败,以及是否有任何其他方法可以使用IE9获取矢量图像。

谢谢, 苏巴


谢谢,我担心情况可能如此。你知道是否有一种方法可以暂时将IE9渲染切换到GDI模式。我希望这会降低渲染质量/效率,我应该能够在我当前的应用程序中使用它。

2 个答案:

答案 0 :(得分:3)

这只是猜测。 IE9通过硬件加速推动渲染速度更快。我怀疑他们绕过GDI并使用更直接的东西,比如新的DirectWrite和/或Direct2D API。图元文件基本上是GDI调用的序列化。没有GDI调用,就没有太多可以捕获它。所以你可能运气不好。 : - (

答案 1 :(得分:1)

尝试在documentElement(IHtmlDocument3的属性)上执行相同操作 不能保证它会起作用。