Windows API Code Packによるアプリ開発 第8回 Windows 7 タスクバー ~サムネイル ツールバー その2~

Windows API Code Packによるアプリ開発 [TechED2010 ポストセッション]
第8回 Windows 7 タスクバー ~サムネイル ツールバー その2~

今回は、前回の記事 ( 第7回) で作成したWebブラウザに、サムネイル ツールバーの機能を実装します。
まずは前回作成したプロジェクトファイルを開き、Windows API Code Packを使用するための前準備をします。
前準備については、第5回の記事の「タスクバー関連の機能を使う前に」の項目と、最後のほうの注意事項をご参照ください。

それでは、実装を進めていきましょう。
Visual Studio上で前回作成したプロジェクトを開いていて、前述の前準備が終了している状態から始めます。

手順1 : アイコンの準備
まずは、ツールバーに表示させるアイコンを準備します。
Visual Studioで新たに作成しても構いませんし、既存のアイコンを使用しても構いません。
既にアイコンのファイルがある場合は、ソリューション エクスプローラーに表示されているツリーの中で、Propertyと表示されているところの下にぶら下がっているResources.resxをダブルクリックしてください。
下図のような画面になりますので、中央のResource.resxを開いているエディターの上に、既存のアイコンをドラッグアンドドロップしてください。

アイコンが手元にない場合は、システムに登録されているアイコンを一時的に使用しますので、本記事を試すためにわざわざアイコンを作らなくても構いません。
ここでは、以下の既存のアイコンを使用したケースと、システムに登録されているアイコンを使用するケースの、2つのケースについて説明します。

戻るアイコン (back.ico)

次へアイコン (forward.ico)

手順2 : アイコンの定義
Form1クラスの中に、以下の定義を実装します。

private ThumbnailToolBarButton thumbButtonBack;
private ThumbnailToolBarButton thumbButtonForward;

これは、戻るボタンと進むボタンに相当します。

手順3 : アイコンのイベントハンドラの実装
ボタンがクリックされたときのイベントハンドラを、Form1クラスの中に実装します。

void thumbButtonBack_Click(
object sender, ThumbnailButtonClickedEventArgs e)
{
// 戻るアイコンに応じた処理
webBrowser1.GoBack();
}

void thumbButtonForward_Click(
object sender, ThumbnailButtonClickedEventArgs e)
{
// 進むアイコンに応じた処理
webBrowser1.GoForward();
}

戻るアイコンがクリックされたときは、WebブラウザコントロールのGoBackメソッドを呼び出し、1つ前に表示されたページに戻ります。
同様に、進むボタンがクリックされたときはGoForwardメソッドを呼び出します。

手順4 : アイコンとイベントハンドラの関連付け
アイコンがクリックされたときに発生するイベントと、先ほど作成したイベントハンドラを関連付けます。
以下のコードは、コンストラクタの中のInitializeComponent()を呼び出している部分の後に追加します。

[既存のアイコンを使用しているとき]
この例は、back.icoとforward.icoという名前のアイコンを手順1で追加した例です。ファイル名が違う場合は、Properties.Resources.back等の赤い字の部分を使用したアイコンのファイル名に書き換えてください。

thumbButtonBack = new ThumbnailToolBarButton(Properties.Resources.back, "戻る");
thumbButtonBack.Click += new EventHandler<ThumbnailButtonClickedEventArgs>(thumbButtonBack_Click);

thumbButtonForward = new ThumbnailToolBarButton(Properties.Resources.forward, "進む");
thumbButtonForward.Click += new EventHandler<ThumbnailButtonClickedEventArgs>(thumbButtonForward_Click);

[システムアイコンを使用した場合]
手元にアイコンがない場合は、テスト用としてシステムに登録されているアイコンを使用します。
ここでは、?アイコンを戻るアイコンに代わりに、!アイコンを進むアイコンの代わりに使用します。

thumbButtonBack = new ThumbnailToolBarButton(SystemIcons.Question, "戻る");
thumbButtonBack.Click += new EventHandler<ThumbnailButtonClickedEventArgs>(thumbButtonBack_Click);

thumbButtonForward = new ThumbnailToolBarButton(SystemIcons.Exclamation, "進む");
thumbButtonForward.Click += new EventHandler<ThumbnailButtonClickedEventArgs>(thumbButtonForward_Click);

手順5 : ツールバーへのアイコンの追加
最後に、サムネイル ツールバーにアイコンを追加します。
このコードは、手順4のコードの直後に記述します。

TaskbarManager.Instance.ThumbnailToolBars.AddButtons(Handle, thumbButtonBack, thumbButtonForward);

ここでは、戻るアイコンであるthumbButtonBackと、進むアイコンであるthumbButtonForwardの2つのアイコンを追加します。
3つ以上のアイコンを登録することも可能です。アイコンは、最大7つまで登録できます。

これでサムネイル ツールバーの実装は終了です。
テキストボックスにURLを入力してボタンをクリックすると、Webブラウザ コントロールにそのURLのページを表示します。
いくつかのページを表示させた後、サムネイル ツールバーに登録したアイコンをクリックして、動作を確認してください。

システムアイコンを使用したときの実行例

[ 注意事項 ]
Windows API Code Packのバージョンによってクラス名が違う場合があります。
今回使用したThumbnailToolBarButtonは、最新バージョンのCode Packである1.1の名称です。TechEdのときに使用していたバージョン1.01では、ThumbnailToolbarButtonという名称でした。ToolBarとToolbarのように、bの大文字/小文字の部分のみ相違があります。

次回は、タブコントロールにおけるサムネイルについて説明します。

[ごめんなさい]
ついスクリーンショットをVisual Studio 2010で撮ってしまいました。Visual Studio 2008でも画面の内容はほぼ同じです。

[参考資料 ]
TechEDでのビデオとスライド
https://msdn.microsoft.com/ja-jp/events/ff973814.aspx
内容を早く知りたい方や、デモを確認されたい方は、ビデオをご覧ください。

Windows API Code PackによるWindowsアプリ開発 [TechEDポストセッション]
第1回 : Windows API Code Packとは
第2回 : アプリケーションの再起動と修復その1
第3回 : アプリケーションの再起動と修復その2
第4回 : 電源の状況の把握
第5回 : Windows 7 タスクバー ~アイコンオーバーレイ~
第6回 : Windows 7 タスクバー ~進行状況バー ( プログレス バー )
第7回 : Windows 7 タスクバー ~サムネイル ツールバー その1
第8回 : Windows 7 タスクバー ~サムネイルツールバー その2~

番外編1 : アプリをクラッシュさせるには
番外編2 : シューティングゲームにタスクバーの機能を追加
その後も、Windows 7のタスクバー関連の説明を行います。

マイクロソフト
田中達彦