ウィンドウにWebブラウザコントロールを追加したい純粋なWin32アプリケーション(MFCなどはありません)があります。COMの基本を知っており、を使用してブラウザ用のCOMオブジェクトを作成できます。
hr = CoCreateInstance(
CLSID_WebBrowser,
NULL,
CLSCTX_INPROC,
IID_IWebBrowser2,
(void**) &pWebBrowser);
ただし、明らかに、IOleClientSite*を渡してSetClientSiteを呼び出す必要があります。このようなインターフェイスを取得するにはどうすればよいですか?この例では、独自のブラウザクラスを実装しています。このクラスは、そこから派生して実装することでインターフェイスを提供します(ここ)。私はその道をたどろうとしましたが、ブラウザクラスをインスタンス化するには、それを登録する必要があります(いいえ?)。これは非常に複雑に思えます。自分のオブジェクトを実装して登録するのではなく、既存のCOMオブジェクトを使用したいだけです。私は何が欠けていますか?
アプリケーションの一部として独自のClientSiteクラスを実装していると仮定すると、それを登録せずに、を呼び出してインスタンス化するnew ClientSite
(そして、を使用してインターフェイスをフェッチするQueryInterface
)ことは可能ですか?これは機能しますか、それとも電話する必要がありますCoCreateInstance
か?