我一直在使用以下代码来获取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); // 获取DC
hr = pRender->DrawToDC(hMetaDC);
以上代码已经在IE6、IE7、IE8上完美运行,为浏览器内容提供了矢量图像。但是上述DrawToDC调用在IE9 Beta版本(在32位Windows 7上测试)中失败,错误代码为0x8007000e。
我尝试使用WM_PRINT和其他绘制方法,但只能获取位图图像,而无法获取矢量图像。
请问为什么上面的代码在IE9中会失败,是否有其他方法可以获取IE9的矢量图像呢?
谢谢, Subhash
谢谢,我担心情况可能是这样。您是否知道是否有一种方法可以暂时将IE9渲染切换到GDI模式。我预计这会降低渲染质量/效率,但在我的当前应用程序中应该可以接受。
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); // 获取DC
hr = pRender->DrawToDC(hMetaDC);
以上代码已经在IE6、IE7、IE8上完美运行,为浏览器内容提供了矢量图像。但是上述DrawToDC调用在IE9 Beta版本(在32位Windows 7上测试)中失败,错误代码为0x8007000e。
我尝试使用WM_PRINT和其他绘制方法,但只能获取位图图像,而无法获取矢量图像。
请问为什么上面的代码在IE9中会失败,是否有其他方法可以获取IE9的矢量图像呢?
谢谢, Subhash
谢谢,我担心情况可能是这样。您是否知道是否有一种方法可以暂时将IE9渲染切换到GDI模式。我预计这会降低渲染质量/效率,但在我的当前应用程序中应该可以接受。