我有一个纯Win32应用程序(没有MFC等),我希望在窗口中添加一个Web浏览器控件。我知道COM的基础知识,可以使用以下方法为浏览器创建一个COM对象:
hr = CoCreateInstance(
CLSID_WebBrowser,
NULL,
CLSCTX_INPROC,
IID_IWebBrowser2,
(void**) &pWebBrowser);
然而,显然需要调用SetClientSite,并传递一个IOleClientSite*。如何获取这样的接口?这个示例实现了它自己的浏览器类,该类通过派生和实现它(此处)提供了接口。我试图沿着这条路走,但是为了实例化浏览器类,我需要注册它(不是吗?)。这看起来非常复杂 - 我只想使用现有的COM对象,而不是实现和注册自己的对象。我错过了什么?
假设我作为应用程序的一部分实现了自己的ClientSite类,是否有可能不注册它,只需通过调用
new ClientSite
来实例化它(然后使用QueryInterface
获取接口)?这会起作用吗,还是必须调用CoCreateInstance
?