「ブラウザはオレの下僕だ」
IWebBrowser2を取り寄せる
IWebBrowser2というコンポーネントがあります
この子は、指定URLへの移動、更新、中止、戻る、進む等の動作ができる高性能な子です
ツールバー上からブラウザを操るには、この子を使います
この子を連れてくるには、IObjectWithSiteから、ISerivceProviderを頂戴して、
そこからQueryServiceを実行して見つけてくるらしい
「な、何語?」
たぶん、日本語かMicrosoft語だと思いますが、よく分かりません
とりあえずQueryServiceは、こんな機能だそうです
The QueryService class is the entry point for calling the Microsoft Windows SharePoint Services 内で検索 Query web service.
ToolbarWindowにSetterを用意しておく
IWebBrowser2は、ToolbarWindowクラスで使用するので、
ToolbarWindow.hにSetterを用意しておいて、メンバ変数として保持するようにします
こんな感じで
・ToolbarWindow.h
イコールオペレータでなく、Attachを使ってます
正しいやり方かとは思いませんが、Releaseされてる回数を見るととりあえず大丈夫そうです
CComPtrの説明
ToolbarWindowの受け口を作ったので、今度はKumaBarBandでIWebBrowser2を取得し、ToolbarWindowにセットします
その前に、CComPtrの説明を少々
IWebBrowser2は、CComPtrを使用して保持することにします
CComPtrは、COMクラスのreleaseをデストラクタで勝手にやってくれる代物です
自前でreleaseって書く必要が無いので便利です
今回は、ToolbarWindowクラスにCComPtrを用意し、KumaBarBandではIWebBrowser2のポインタを用意します
で、SetBrowser時に、IWebBrowser2をCComPtrにAttachしています
ということは、生まれている参照はこの3つ
1. CKumaBarBand::GetWindow内の変数
2. CToolbarWindow::SetBroserの引数
3. CtoolbarWindowのメンバ変数
動かした感じ、SetBroser実行時に引数分のAddRefが発生し、SetBroser終了時に即Release
また、CKumaBarBand::GetWindow終了時に、関数内で宣言したCComPtrをRelease
最後にブラウザ終了時に、CToolbarWindowのメンバ変数のCComPtrがReleaseされてました
ってことは、多分、ちゃんとReleaseできてるのかなぁ、と
「残っても、OS再起動すればいいんでない」
いや、ダメでしょ、それは・・・
KumaBarBandでIWebBrowser2を取得する
前置きが長くなりましたが、そういうわけで、IWebBrowser2を取得して、
ToolbarWindowにセットしてみます
こんな感じになります(赤いとこが追加分)
・KumaBarBand.cpp
出来上がり
と言っても、ビルドしても何も変わりはありません
「何も起きないと、実装した気にならねーな」
次回、このIWebBrowser2動作をさせてみます
コメントスペース