ホーム | プログラミングTClock |
2003/12/07記。
ここでは、Windows 95以降の歴代のWindowsでタスクバーとスタートメニューがどのように変化してきたか見てみましょう。
初期のWindows 95/NT4のタスクバーは、全部で6個のウィンドウからなるシンプルなものでした。次は、ウィンドウのクラス名と親子関係を表したものです。Shell_TrayWnd、Button、TrayNotifyWnd、TrayClockWClass、MSTaskSwWClassといったクラス名は、Windows XPの今も変わっていません。
TClockは、時計ウィンドウ(TrayClockWClass)をサブクラス化して時計を改造します。
Shell_TrayWnd タスクバー
|- Button スタートボタン
|- MSTaskSwWClass タスクスイッチ
| +- SysTabControl32 タスクスイッチのボタン(タブコントロール)
+- TrayNotifyWnd トレイ
+- TrayClockWClass 時計

初期のWindows95/NT4のスタートメニューは、ただのポップアップメニューでした。オーナードローのメニューで「Windows95」の文字やアイコンを描画しているだけです。
TClockは、初期のWindows95/NT4では、タスクバー(Shell_TrayWnd)をサブクラス化して、メッセージ WM_DRAWITEM を処理することで、スタートメニューを改造しています。
IE 4を「シェル統合」付きでWindows95/NT4にインストールすると、タスクバーは次のように変わります。タスクスイッチ(MSTaskSwWClass)の代わりにリバーコントロール(ReBarWindow32)が置かれ、タスクスイッチはリバーの子ウィンドウになりました。現在のXPにいたるタスクバーの基本形です。
TClockは、「平らなタスクスイッチ」の機能を使うときは、タスクスイッチの子ウィンドウであるタブコントロール(SysTabControl32)をサブクラス化します。
Shell_TrayWnd タスクバー
|- Button スタートボタン
|- ReBarWindow32 リバー
| |- MSTaskSwWClass タスクスイッチ
| | +- SysTabControl32 タスクスイッチのボタン
| +- SysPager クイックランチ
| +- ToolbarWindow32
+- TrayNotifyWnd トレイ
+- TrayClockWClass 時計

IE 4の新しいシェルでは、スタートメニューはメニューではなく、BaseBar というクラス名のウィンドウになりました。「Windows 95」や「Windows NT Workstation」などのロゴは、BaseBar の上、ReBarWindow32 の左に描かれます。
TClockは、IE 4以降では、BaseBar をサブクラス化して描画を行うことで、スタートメニューを改造します。
BaseBar
+- ReBarWindow32
+- SysPager
+- ToolbarWindow32

Windows 98(IE 5)では、IE 4の新しいシェルの場合とタスクバーはほとんど変わりません。
Shell_TrayWnd タスクバー
|- Button スタートボタン
|- ReBarWindow32 リバー
| |- MSTaskSwWClass タスクスイッチ
| | +- SysTabControl32 タスクスイッチのボタン
| +- ToolbarWindow32 クイックランチ
+- TrayNotifyWnd トレイ
+- TrayClockWClass 時計

Windows 98(IE 5)のスタートメニューは、IE 4のスタートメニューと同じく、クラス名が BaseBar のウィンドウです。ただし、子ウィンドウの ReBarWindow32 が MenuSite に置き換わっています。Windows XPクラシックまで、この構成は同じです。
BaseBar
+- MenuSite
+- SysPager
| +- ToolbarWindow32
+- ToolbarWindow32

Windows Meおよび2000のタスクバーは、Windows 98とほぼ同じですが、トレイの中で通知用アイコンを並べている部分がツールバーになりました。
TClockの「トレイを塗りつぶす」機能は、通知用アイコンがツールバーになっていることを利用しています。
Shell_TrayWnd タスクバー
|- Button スタートボタン
|- ReBarWindow32 リバー
| |- MSTaskSwWClass タスクスイッチ
| | +- SysTabControl32 タスクスイッチのボタン
| +- ToolbarWindow32 クイックランチ
+- TrayNotifyWnd トレイ
+- TrayClockWClass 時計
+- ToolbarWindow32 トレイのアイコン

Windows Meおよび2000のスタートメニューは、Windows 98と同じで、クラス名が BaseBar のウィンドウです。

Windows XPのタスクバーは、これまでのWindowsとは見映えが大きく異なりますが、タスクバーの基本的な構成は同じです。変わったところは、次のとおりです。
Shell_TrayWnd タスクバー
|- Button スタートボタン
|- ReBarWindow32 リバー
| |- MSTaskSwWClass タスクスイッチ
| | +- ToolbarWindow32 タスクスイッチのボタン
| +- ToolbarWindow32 クイックランチ
+- TrayNotifyWnd トレイ
|- TrayClockWClass 時計
|- SysPager トレイのアイコン
| +- ToolbarWindow32
+- Button トレイのアイコン切り替えボタン

Windows XPのスタートメニューは、設定で「クラシック[スタート]メニュー」を選んだ場合は、Windows 98以降のスタートメニューと同じです。クラス名 BaseBar のウィンドウになります。

Windows XPの新しいスタートメニューは、DV2ControlHost というクラス名のウィンドウです。このスタートメニューは、5つの子ウィンドウを持ちます。
TClock Lightでは、スタートメニューをカスタマイズするときは、Desktop User Pane をサブクラス化してメニュー上部に画像を描画します。
DV2ControlHost スタートメニュー
|- Desktop User Pane メニュー上部
| +- Static
|- DesktopSFTBarHost メニュー左部
| +- SysListView32
| +- SysListView32
|- Desktop More Programs Pane 「すべてのプログラム」の部分
| +- Button
|- DesktopSFTBarHost メニュー右部
| +- SysListView32
| +- SysListView32
+- DesktopLogoffPane メニュー下部
+- ToolbarWindow32
