Com 有没有办法将Webbrowser内容绘制到特定的DC?

Com 有没有办法将Webbrowser内容绘制到特定的DC?,com,winapi,webbrowser-control,gdi,iwebbrowser2,Com,Winapi,Webbrowser Control,Gdi,Iwebbrowser2,这些天,我试图在我的程序中创建一个隐藏的WebBrowser控件,并使用IViewObject接口绘制自定义DC 结果很好,我得到了我想要的所有内容,但绘制速度令人无法接受,尤其是一些包含Flash对象的复杂网页,每次绘制到DC的成本超过100 ms。所以我画的闪光物体是不光滑的 是否有一种快速方法将控件绘制到我的特定DC? 我的代码是这样的: //hCompDc is a CompatibleDC which select a CompatibleBitmap. RECTL imageRect

这些天,我试图在我的程序中创建一个隐藏的WebBrowser控件,并使用IViewObject接口绘制自定义DC

结果很好,我得到了我想要的所有内容,但绘制速度令人无法接受,尤其是一些包含Flash对象的复杂网页,每次绘制到DC的成本超过100 ms。所以我画的闪光物体是不光滑的

是否有一种快速方法将控件绘制到我的特定DC?

我的代码是这样的:

//hCompDc is a CompatibleDC which select a CompatibleBitmap.
RECTL imageRect = {0, 0, nWidth, nHeight};
pHtmlDocument2->QueryInterface(IID_IViewObject, (void **)&pViewObject);
pViewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, NULL, hCompDc, NULL, &imageRect, NULL, 0);
谢谢你阅读这个问题


等待你的答案~

没有其他方法可以做到这一点。您正在使用的任何组件(如Flash等)都不是按这种方式设计的。如果绘图时间是一个问题,则必须在单独的线程上执行此操作并进行同步。

尝试以下操作:


你想完成什么?@Daniel我想让WebBrowser的内容流畅,并将其绘制到其他地方,如DirectX surface或MemDC。如果我可以隐藏原始的浏览器UII更好我认为使用多线程可以帮助UI看起来平滑,但是浏览器内容仍然不平滑?我想错了吗?我不确定我是否理解你的问题。我尝试创建一个线程调用OleDraw函数,但我不知道如何与COM接口同步。“OleDraw”中的调用将始终引发异常。我只能在单独的线程中使用WM_打印:(.当然是:),但COM多线程我认为更难,我迷失了方向~
char* buffer = new char[800*600*4];
IWebVeiw* webView = wkeCreateWebView("");    
webView->resize(800, 600);
webView->loadURL("www.google.com");
webView->paint(buffer, 0);
wkeDestroyWebView(webView);