ホーム | プログラミングTClock |


2003/12/07記。

タスクバーとスタートメニューの歴史

ここでは、Windows 95以降の歴代のWindowsでタスクバーとスタートメニューがどのように変化してきたか見てみましょう。

Windows 95(IE 4なし)

タスクバー

初期のWindows 95/NT4のタスクバーは、全部で6個のウィンドウからなるシンプルなものでした。次は、ウィンドウのクラス名と親子関係を表したものです。Shell_TrayWnd、Button、TrayNotifyWnd、TrayClockWClass、MSTaskSwWClassといったクラス名は、Windows XPの今も変わっていません。

TClockは、時計ウィンドウ(TrayClockWClass)をサブクラス化して時計を改造します。

  Shell_TrayWnd              タスクバー
   |- Button                     スタートボタン
   |- MSTaskSwWClass             タスクスイッチ
   |     +- SysTabControl32          タスクスイッチのボタン(タブコントロール)
   +- TrayNotifyWnd              トレイ
         +- TrayClockWClass          時計

Windows 95のタスクバー

スタートメニュー

初期のWindows95/NT4のスタートメニューは、ただのポップアップメニューでした。オーナードローのメニューで「Windows95」の文字やアイコンを描画しているだけです。

TClockは、初期のWindows95/NT4では、タスクバー(Shell_TrayWnd)をサブクラス化して、メッセージ WM_DRAWITEM を処理することで、スタートメニューを改造しています。

Windows 95のスタートメニュー

IE 4の新しいシェル

タスクバー

IE 4を「シェル統合」付きでWindows95/NT4にインストールすると、タスクバーは次のように変わります。タスクスイッチ(MSTaskSwWClass)の代わりにリバーコントロール(ReBarWindow32)が置かれ、タスクスイッチはリバーの子ウィンドウになりました。現在のXPにいたるタスクバーの基本形です。

TClockは、「平らなタスクスイッチ」の機能を使うときは、タスクスイッチの子ウィンドウであるタブコントロール(SysTabControl32)をサブクラス化します。

  Shell_TrayWnd                    タスクバー
   |- Button                           スタートボタン
   |- ReBarWindow32                    リバー
   |    |- MSTaskSwWClass                  タスクスイッチ
   |    |    +- SysTabControl32                タスクスイッチのボタン
   |    +- SysPager                        クイックランチ
   |         +- ToolbarWindow32            
   +- TrayNotifyWnd                    トレイ
        +- TrayClockWClass                 時計

IE 4の新しいシェルでのタスクバー

スタートメニュー

IE 4の新しいシェルでは、スタートメニューはメニューではなく、BaseBar というクラス名のウィンドウになりました。「Windows 95」や「Windows NT Workstation」などのロゴは、BaseBar の上、ReBarWindow32 の左に描かれます。

TClockは、IE 4以降では、BaseBar をサブクラス化して描画を行うことで、スタートメニューを改造します。

  BaseBar
    +- ReBarWindow32
         +- SysPager
              +- ToolbarWindow32

IE 4の新しいシェルでのスタートメニュー

Windows 98

タスクバー

Windows 98(IE 5)では、IE 4の新しいシェルの場合とタスクバーはほとんど変わりません。

  Shell_TrayWnd                    タスクバー
   |- Button                           スタートボタン
   |- ReBarWindow32                    リバー
   |    |- MSTaskSwWClass                  タスクスイッチ
   |    |    +- SysTabControl32                タスクスイッチのボタン
   |    +- ToolbarWindow32                 クイックランチ
   +- TrayNotifyWnd                    トレイ
        +- TrayClockWClass                 時計

Windows 98のタスクバー

スタートメニュー

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

  BaseBar
    +- MenuSite
         +- SysPager
         |    +- ToolbarWindow32
         +- ToolbarWindow32

Windows 98のスタートメニュー

Windows Me/2000

タスクバー

Windows Meおよび2000のタスクバーは、Windows 98とほぼ同じですが、トレイの中で通知用アイコンを並べている部分がツールバーになりました。

TClockの「トレイを塗りつぶす」機能は、通知用アイコンがツールバーになっていることを利用しています。

  Shell_TrayWnd                    タスクバー
   |- Button                           スタートボタン
   |- ReBarWindow32                    リバー
   |    |- MSTaskSwWClass                  タスクスイッチ
   |    |    +- SysTabControl32                タスクスイッチのボタン
   |    +- ToolbarWindow32                 クイックランチ
   +- TrayNotifyWnd                    トレイ
        +- TrayClockWClass                 時計
        +- ToolbarWindow32                 トレイのアイコン

Windows Meのタスクバー

スタートメニュー

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

Windows Meのスタートメニュー

Windows XP

タスクバー

Windows XPのタスクバーは、これまでのWindowsとは見映えが大きく異なりますが、タスクバーの基本的な構成は同じです。変わったところは、次のとおりです。

  Shell_TrayWnd                    タスクバー
   |- Button                           スタートボタン
   |- ReBarWindow32                    リバー
   |    |- MSTaskSwWClass                  タスクスイッチ
   |    |    +- ToolbarWindow32                タスクスイッチのボタン
   |    +- ToolbarWindow32                 クイックランチ
   +- TrayNotifyWnd                    トレイ
        |- TrayClockWClass                 時計
        |- SysPager                        トレイのアイコン
        |    +- ToolbarWindow32
        +- Button                          トレイのアイコン切り替えボタン

Windows XPのタスクバー

スタートメニュー

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

Windows XPのスタートメニュー(クラシック)

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

Windows XPの新しいスタートメニュー