Microsoft Visual C++ と Windows 7 を使用しています
。ATL と MFC を使用して IE ツールバーを開発しています。IE のバージョンは 11.0.9600.17420 です。
まず、COM オブジェクトの実装IDeskBand
とIObjectWithSite
インターフェイスを作成しました。
次に、IDeskBand
メソッドとIObjectWithSite::SetSite
メソッドを実装しました。パラメーターは 1 つだけIUnknown *pUnkSite
です。
私が覚えているようにpUnkSite->QueryInterface(IID_IOleWindow, (void**)&pOleWindow);
、サイトから IOleWindow インターフェイスを取得してからpOleWindow->GetWindow(&hWnd);
、親ウィンドウ ハンドルを取得するために呼び出すことができます。これを使用して、ツールバー ウィンドウを window の子として作成できますhWnd
。
だから私はそれをして、それがpUnkSite->QueryInterface(IID_IOleWindow, (void**)&pOleWindow);
エラーであることに気づいたので、オブジェクトによって実装されていません! デバッガーで IE を開き、シンボルをロードし、トレースして、インターフェイスの実装がないことに気付きました。私が間違っていなければ、それはインターフェースでした。0x80004002
E_NOINTERFACE
IOleWindow
pUnkSite
QISearch
IOleWindow
CIEFrameAuto
IOleWindow
では、ツールバーの親ウィンドウのインターフェイスを取得するにはどうすればよいですか?