DrawToDC fails on IE9 web browser control

3

I have been using the following code to get a metafile vector image for the content of IWebBrowser2 control as following:

IHTMLElement* pDocBody;

IHTMLDocument2* pDoc;

... ...

pDoc->get_body(&pDocBody); // get body element for IHTMLDocument2

pDocBody->get_parentElement(&pEleParent); pEleParent->QueryInterface(IID_IHTMLElement2,(void**)&pRenderEle2); // get the element to render from

pRenderEle2->QueryInterface(IID_IHTMLElementRender,(void**)&pRender); // get the render interface

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

hr = pRender->DrawToDC(hMetaDC);

The code above had worked beautifully with IE6, IE7, IE8 to provide for vector image for the browser content. But the DrawToDC call above fails with the Beta release of IE9 (testing on Windows 7, 32 bit) with error code: 0x8007000e .

I have tried to use WM_PRINT and other draw methods but I am only able to get the bitmap image, not the vector image.

Any idea why DrawToDC fail with IE9 in the code above, and if there is any other method of getting vector image with IE9.

Thanks, Subhash


Thanks, I was afraid this might be the case. Do you know if there is a method available to switch IE9 rendering to GDI mode temporarily. I expect this to reduce the rendering quality/efficiency, which I should be able to live with in my current application.

render
internet-explorer-9
asked on Stack Overflow Sep 29, 2010 by Subhash Bhardwaj • edited May 25, 2013 by Bill the Lizard

2 Answers

3

This is just a guess. IE9 touts faster rendering through hardware acceleration. I suspect that they're bypassing GDI and using something more direct like the new DirectWrite and/or Direct2D APIs. Metafiles are basically a serialization of GDI calls. Without GDI calls, there's not much to capture there. So you may be out of luck. :-(

answered on Stack Overflow Sep 29, 2010 by Adrian McCarthy
1

Try To do the same on documentElement (property of IHtmlDocument3) Can't promise it will work.

answered on Stack Overflow Nov 29, 2010 by Yuval Aviguy

User contributions licensed under CC BY-SA 3.0