Windows API Code Packによるアプリ開発 第12回 Windows 7 タスクバー ~タブ サムネイルの実装~

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

タブ サムネイルを実装するには、Windows API Code Packを使用します。
Windows API Code Packでは、タブ サムネイルに関するいくつかの機能を提供しています。
それらの機能を使用して、タブ サムネイルを実装していきましょう。

[ タブ サムネイルのサンプルプログラム ]
まずは、Visual Studioを使用して、Windowsフォームのアプリケーションを作成し、ButtonとTabContorolを貼り付けます。
Code Packを使う準備としては、第5回の記事の[タスクバー関連の機能を使う前に]という部分と、[参考資料]の前にある「実装の途中で」で始まる部分をご参照ください。

貼り付けたボタンをダブルクリックし、生成されたイベントハンドラに以下のコードを記述します。

private void button1_Click(object sender, EventArgs e)
{
TabPage newPage = new TabPage();

// タブごとの違いを出すため、背景色をランダムに変更する
// (この部分はテスト用であり、必須ではありません)
Random rgb = new Random();
newPage.BackColor = Color.FromArgb(rgb.Next(255), rgb.Next(255), rgb.Next(255));

// 新しいタブを追加する
tabControl1.TabPages.Add(newPage);
tabControl1.SelectedTab = newPage;

// サムネイル用のプレビューを作成し、サムネイルに追加する
TabbedThumbnail preview = new TabbedThumbnail(this.Handle, newPage.Handle);
TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(preview);

// サムネイルに対して操作を行った時のイベントハンドラをここで追加

// プレビューに、タブ上に表示されているイメージを設定する
Bitmap previewImage = TabbedThumbnailScreenCapture.GrabWindowBitmap(
tabControl1.SelectedTab.Handle, tabControl1.SelectedTab.Size);
preview.SetImage(previewImage);
}

ここでは、単に見た目だけのサムネイルを追加しています。
このプログラムを実行し、ボタンを2回クリックすると、下図のようになります。

ここで見ていただきたい点としては、tabPage1とtabPage2に相当するサムネイルが表示されていないという点です。
タブ サムネイルを使用すると、サムネイルに関する処理を全てアプリケーション側で実装する必要が出てきます。
今回のコードでは、ボタンをクリックしたときに新規のタブを追加し、そのタブに相当するサムネイルも追加しています。
既存のタブに関しては、何の処理も行っていません。

表示されたサムネイルをクリックしたり、サムネイルの右上に表示される赤い X ボタンをクリックしてみてください。
おそらく、予想とは違う動きをしているのではないでしょうか。
このように、サムネイルに対して何らかの操作を行った場合の処理も、アプリケーション側で用意する必要があるのです。

次回は、サムネイルに対する操作を行った時の処理について説明します。

[参考資料 ]
TechEDでのビデオとスライド
https://msdn.microsoft.com/ja-jp/events/ff973814.aspx
内容を早く知りたい方や、デモを確認されたい方は、ビデオをご覧ください。
本連載は、Code Packのバージョン1.1を元に説明しています。
TechEDでは、当時の最新バージョンである1.01を元に説明しました。
内容はほぼ同じですが、クラス名など一部に小さな違いがあることがあります。

[Windows API Code Packのダウンロード ]https://code.msdn.microsoft.com/WindowsAPICodePack

このページの右上にある、「Current Release」と書かれた部分のすぐ下にあるリンクをクリックすると、ダウンロードページに飛びます。

[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
第9回 : Windows 7 タスクバー ~サムネイルについて知っておくべきこと~
第10回 : Windows 7 タスクバー ~アプリケーション ユーザー モデル ID (AppID)
第11回 : Windows 7 タスクバー ~タブに対応したサムネイル~
第12回 : Windows 7 タスクバー ~タブサムネイルの実装~

番外編 : Windowsフォームアプリによる電源の状況の把握
番外編1 : アプリをクラッシュさせるには
番外編2 : シューティングゲームにタスクバーの機能を追加
サムネイルのあとは、ジャンプリストの説明を行います。

マイクロソフト
田中達彦