熊「ブラウザはオレの下僕だ」


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動作をさせてみます


HOME    次へ


コメントスペース