「ツールバーが動くようになったらしい」
Windowを登録する
早いもので、今回で第1章12節まで来ました。
「目標は3章16節か?」
いや、1章20節くらいで終わると思うけど。
それはさておき、先回はツールバクラスを作るところまで行きましたが、
クラスを作っただけではIEとは何の結びつきもないので、IEツールバーとしては操作できません。
実際にツールバーを実装する為には、Windowを作ってそこに作成したツールバーを子要素として持たせ、
IOleWindowのGetWindow時に、そのWindowハンドルを返して上げる必要があります。
ツールバーとWindowの菅家については、普通のWindowsプログラミングで、
WS_OVERLAPPEDWINDOWなウィンドウにツールバー取り付けるのと同じ感じになります。
ツールバー自体の実装方法について詳しくない場合は、この辺参照で
http://www.kumei.ne.jp/c_lang/sdk/sdk_61.htm
「コンセプトだけじゃなく解説まで頼るか」
すいません
KumaBarBandにCWindowImplを継承させる
KBBarやMotleyFoolの例を見ると、ReflectionWindowという何もしないWS_CHILDなWindowを作って、
それを親とするツールバーを作るみたいな形で実装をしています。
が、そうやって作るのがなんとなく気分じゃなかったので、GoogleCodeSearchで他のやり方を探していたら、
Bandクラス自体にCWindowImplを継承させるという方法が載ってました。
このやり方もどうかとは思いますが、とりあえずそれで実装して見ます。
KumaBarBand.h
CWindowImplを継承します。
CWindowImpl実装クラスに必要なマクロ、DECLARE_WND_CLASSとBEGIN_MSG_MAPを書きます。
後は、デストラクタが必要になったので用意して、なんとなくコンストラクタを外出ししました。
詳しい実装はリンク先を見てください。
赤文字が今回追加した部分になります。
KumaBarBand.h
KumaBarBand.cpp
デストラクタを追加しました
WindowをDestroyしてます
あとはGetWindowの処理を書いてます
QueryInterfaceとかreleaseしなくていいように、CComQIPtrを頼りました。
KumaBarBand.cpp
ビルド
ビルドして、IEを立ち上げて、ツールバー辺りをクリックしてみてください
「センスのないメッセージが出たな」
センスない言うな
コメントスペース