ソースを見ていただけば、お分かりのように非常にシンプルです。CStatusBarExは、CStatusBarの派生クラスで前述のようにDrawItemのみオーバーライドしてあり、その他の処理はシステムに任せてあります。
しかし、テキストの変更だけは、関数を追加しました。その理由は、SetText関数を使用するとオーナー描画のモードが解除されてしまい次からOnDrawが呼よばれなくなってしまうからです。
お手持ちのソースに追加する場合は、以下のようにして下さい。
@ まず、貴方のステータスバーを持つプロジェクトに StatusBarEx.cppとStatusBarEx.hを挿入して下さい。
A 次に、MainFrm.hの中のメンバ m_wndStatusBarのクラスをCStatusBarからCStatusBarExに変更して下さい。
CStatusBarEx m_wndStatusBar;
B MainFrm.cpp内の OnCreateでステータスバーのCreateの後、サンプルの様に独自に追加したペインのみ以下のコードを追加して下さい。
m_wndStatusBar.Initialize( ID_INDICATOR_ITEM1, TRUE);
m_wndStatusBar.Initialize( ID_INDICATOR_ITEM2, PANE2_TEXT_COLOR1, PANE2_BACK_COLOR1);
最初の行は、色の指定を省いています。この場合、背景色、テキスト色はデフォルト色になり、さらに2番目の引数は禁止色のしていになり、この場合文字色はグレーの禁止色になります。
2行目は色の指定を行った場合で、テキスト色と背景色を指定します。
また、この初期化関数ではペイン毎にオーナー描画指定を行っています。
C 色やテキストの変更はB実行後に、次の関数を必要に応じて使って下さい。
背景色とテキスト色を変更する。
ChangeColors( UINT strId, COLORREF TextColor, COLORREF BackColor)
背景色を変更する。
ChangeBackColor( UINT strId, COLORREF BackColor)
テキスト色を変更する。
ChangeTextColor( UINT strId, COLORREF TextColor)
表示するテキストを変更する。
ChangeText( UINT strId, CString str)
上記中 strIdは、テキストリソース中に指定したペインデータのIDです。
例
m_wndStatusBar.ChangeColor( ID_INDICATOR_ITEM1, RGB( 0, 0, 0), RGB( 0,
255, 0));
色の変更が必要ない場合は、Bのステータスバー登録時に各色を設定すれば、上記の関数は使わなくてもOKです。
|