重用Web浏览器控件

Dab*_*ler 5 c++ windows com winapi webbrowser-control

我有一个纯粹的Win32应用程序(没有MFC等),我想在窗口中添加一个Web浏览器控件.我知道COM的基础知识,可以使用浏览器创建COM对象

 hr = CoCreateInstance(
    CLSID_WebBrowser,
    NULL,
    CLSCTX_INPROC,
    IID_IWebBrowser2,
    (void**) &pWebBrowser);
Run Code Online (Sandbox Code Playgroud)

但是,显然需要调用SetClientSite,传递IOleClientSite*.我如何获得这样的界面?这个例子实现了自己的浏览器类,它通过派生和实现它来提供接口(这里).我尝试沿着那条路走,但为了实例化浏览器类,我必须注册它(不是吗?).这看起来非常复杂 - 我只想使用现有的COM对象,而不是实现和注册我自己的COM对象.我错过了什么?

假设我将我自己的ClientSite类作为我的应用程序的一部分实现,是否可以不注册它,只是通过调用实例化它new ClientSite(然后将接口提取为使用QueryInterface)?这会起作用,还是必须打电话CoCreateInstance

Nat*_*iri 3

CodeGuru上有一个示例, CodeProject上有另一个示例,其中包含托管纯 C 语言实现的 Web 浏览器控件的最简单实现。您必须实现自己的IOleClientSite,但它是更容易实现的类之一。是的,必须调用CoCreateInstanceOleCreate创建 Web 浏览器控件的实例。

http://www.codeguru.com/cpp/in/ieprogram/article.php/c4379/Display-a-Web-Page-in-a-Plain-C-Win32-Application.htm

http://www.codeproject.com/Articles/3365/Embed-an-HTML-control-in-your-own-window-using-pla