次のコードを使用して、IWebBrowser2 コントロールのコンテンツのメタファイル ベクター イメージを次のように取得しています。
IHTMLElement* pDocBody;
IHTMLDocument2* pDoc;
... ... ...
pDoc->get_body(&pDocBody); // IHTMLDocument2 の body 要素を取得
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 のベータ リリース (Windows 7、32 ビットでのテスト) でエラー コード: 0x8007000e で失敗します。
WM_PRINT やその他の描画方法を使用しようとしましたが、ベクター画像ではなくビットマップ画像しか取得できません。
上記のコードで DrawToDC が IE9 で失敗する理由、および IE9 でベクター画像を取得する他の方法があるかどうか。
ありがとう、サブハッシュ
ありがとう、私はこれが事実かもしれないと心配していました。IE9 レンダリングを一時的に GDI モードに切り替える方法があるかどうか知っていますか。これにより、レンダリングの品質/効率が低下することが予想されますが、現在のアプリケーションでは問題なく使用できるはずです。