Windows API Code Packによるアプリ開発 第11回 Windows 7 タスクバー ~タブに対応したサムネイル~

Windows API Code Packによるアプリ開発 [TechED2010 ポストセッション ] 第11回 Windows 7 タスクバー ~タブに対応したサムネイル~
[TDIアプリケーションとサムネイル]
タブを使用して、複数のページをタブをクリックすることにより切り替えられるアプリケーションがあります。
このようなアプリケーションの種類をTDI(タブ ドキュメント インターフェイス)と呼びます。
例えば、Visual Studio 2010やInternet Explorer 8はTDIのアプリケーションです。

デフォルトの状態では、TDIのアプリケーションは各タブに表示されている内容をサムネイルとして表示させず、アプリケーション全体の画像をサムネイルとして表示します。

下図はVisual Studio 2010の画面です。

この図のVisual Studioは、複数のソースコードを表示しており、それらをタブによって切り替えています。
サムネイルは、Visual Studioとして1つのサムネイルしか表示していません。

下図はInternet Explorer 8の画面です。

この図のIE8では、2つのタブにそれぞれ異なったWebサイトを表示させています。
サムネイルは、タブの数に応じて生成されています。
この例だと、IE8は1つしか起動していないのも関わらず、タブによって2つのページを表示させているため、サムネイルが2つ表示されています。

[Code Packとタブ サムネイル ]
デフォルトの状態だと、TDIアプリケーションを作成して実行しても、サムネイルは1つしか生成されません。
Windows API Code Packには、TDIアプリケーションのタブの数に応じてサムネイルを追加する機能が搭載されています。
なお、Code Packの機能は、.NET Frameworkのタブ コントロールのみに対応しています。
タブに応じたサムネイルを、タブ サムネイル(tabbed thumbnail)と呼びます。

[ タブ サムネイルに必要な実装 ]
タブ サムネイルを作成した場合、いくつか必要となる機能を実装しなければなりません。
デフォルトで表示されているサムネイルは、アプリケーション側でなにもしていなくてもシステム側で制御していますので、何の実装もいりません。
タブ サムネイルは、逆にシステム側が何もしてくれないですので、アプリケーション側でサムネイルに関する機能を実装する必要があります。

実装する必要がある部分は、以下の部分です。
- サムネイルに表示させる内容の指定
- サムネイルをクリックしたときの動作
- サムネイルの右上の閉じるボタン(下図右上の赤い 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回 : 第11回 Windows 7 タスクバー ~タブに対応したサムネイル~

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

マイクロソフト
田中達彦