動作確認環境: .NET Framework 3.5、Visual Studio 2010、Windows 7、Windows API Code Pack 1.1

更新日: 2010 年 12 月 17 日

執筆者: マイクロソフト株式会社
デベロッパー エバンジェリスト
田中達彦

Windows API Code Pack を使用すると、Windows 7 のタスク バー上に表示される縮小表示 (サムネイル) に、タブ コントロールの各タブに対応したサムネイルを追加することができます。

タブ コントロールに対応したサムネイルの実装方法を説明します。説明には、Windows フォーム アプリケーションに、タブ コントロールを貼り付けたアプリケーションを使用します。

Visual Studio を起動し、新たに .NET Framework 3.5 以上の Windows フォーム アプリケーションのプロジェクトを作成します。そして、フォーム上に TabControl と、Button を貼り付けてください。

Windows API Code Pack のタスク バー関連の機能を使用するために、Visual Studio のメニューより [プロジェクト] - [参照の追加] を選択し、[参照] タブより Windows API Code Pack で提供している Microsoft.WindowsAPICodePack.Shell.dll への参照を追加し、[.NET] タブより PresentationCore と WindowsBase への参照も追加してください。

Form1.vb のソース コードには、以下の 2 つのコードを記述します。

最初に、先頭に以下のコードを追加します。

[VB]

Visual Basic
' タスクバーの機能を使用するために必要
Imports Microsoft.WindowsAPICodePack.Taskbar
 

フォーム上に貼り付けているボタンをダブルクリックし、ボタンをクリックしたときに呼ばれるイベント ハンドラーである Button1_Click を作成します。そして、その Button1_Click イベント ハンドラーと、その下にサムネイルをクリックしたときのイベント ハンドラーを以下のように記述します。

[VB]

Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim preview As TabbedThumbnail
    Dim previewImage As Bitmap

    ' タブの数だけ繰り返す
    For i As Integer = 0 To TabControl1.TabCount - 1
        preview = New TabbedThumbnail(Handle, TabControl1.TabPages(i))
        ' サムネイルをクリックしたときのイベント()
        AddHandler preview.TabbedThumbnailActivated, AddressOf preview_TabbedThumbnailActivated
        ' サムネイルの追加
        TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(preview)
        ' (注) サムネイルの右上の x ボタンで終了させたときの処理なども必要

        ' 一旦タブを表示し、再描画しておく
        TabControl1.SelectedTab = TabControl1.TabPages(i)
        TabControl1.SelectedTab.Refresh()

        ' サムネイルとして表示させるビットマップ
        previewImage = TabbedThumbnailScreenCapture.GrabWindowBitmap(TabControl1.TabPages(i).Handle, TabControl1.TabPages(i).Size)

        ' サムネイルにイメージを設定する
        preview.SetImage(previewImage)
    Next
End Sub
 

上記のプログラムを実行した直後は、サムネイルが 1 つしか表示されません。フォーム上のボタンをクリックすることにより、タブに対応したサムネイルが生成されます。

このサンプルでは、サムネイルをクリックしたときの処理を実装しています。これ以外に、サムネイルの右上の終了ボタンをクリックしたとき等の処理を実装する必要があります。


Code Recipe Code Recipe

ページのトップへ