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