Windows API Code Packによるアプリ開発 番外編3 ~WPF 4でのプログレスバーの実装方法~

マイクロソフトの田中達彦です。
今までWindows API Code Packの説明ということで、主に.NET Framework 3.5以前のWindowsフォームを元に説明していました。
.NET Framework 4のWPFはWindows 7のタスクバーの機能をサポートしていますので、その方法を紹介します。

[WPF 4での実装方法]
WPF 4でプログレスバーを使うには、以下のように実装します。

System.Windows.Shell.TaskbarItemInfo myTaskbar = new System.Windows.Shell.TaskbarItemInfo();

// 色を緑に指定
myTaskbar.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Normal;
// 値を0.5(アイコン表示領域の半分)にする
myTaskbar.ProgressValue = 0.5;

TaskbarItemInfo = myTaskbar;

ここでAPI Code Packと違う点は、ProgressValueを設定するときに、0から1までの間の数値を設定するという点です。

[試してみるには]
簡単な実験を行うときには、以下のようにします。

1. Visual Studio 2010を立ち上げ、新規プロジェクトでWPFアプリケーションを選択します。その際、.NET Frameworkのバージョンは4を選択しておきます。

2. フォーム上にSliderを貼り付けます。

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

private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
System.Windows.Shell.TaskbarItemInfo myTaskbar = new System.Windows.Shell.TaskbarItemInfo();

// 色を黄色に指定
myTaskbar.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Paused;
// スライダーの値を反映させる
myTaskbar.ProgressValue = slider1.Value / slider1.Maximum;

this.TaskbarItemInfo = myTaskbar;
}

これで実行すると、以下の図のようにスライダーの動きに合わせてプログレスバーの表示領域が変わります。

赤い色を使用する場合は、ProgressStateを設定する部分で、Pausedの代わりにErrorを指定します。

[Code Packを使用した実装方法]
Windows API Code Packを使用した実装方法は、こちらの記事をご参照ください。
https://blogs.msdn.com/b/ttanaka/archive/2010/10/26/windows-api-code-pack.aspx

[キャンペーン]
Windows 7のタスクバー関連の機能を実装すると、Windows 7アプリ投稿キャンペーンへも応募できるようになります。
ぜひ記事を読んでいただいて、タスクバー関連の機能を実装していただき、キャンペーンにご応募ください。
締切は2010年11月30日です。

マイクロソフト
田中達彦