2006-01-19

続256色のツールバー  [by miyachi]

え~先日書いたVC++6.0で256色のツールバークラス(CToolBarCtrl)に関する情報は不完全だったので以下に最終的なコーディングを書いてみる。
 CToolBarCtrl m_TBar;
 CBitmap m_Bitmap;
 CImageList m_ImageList;
 DWORD dwStyle = WS_CHILD | WS_VISIBLE;
 m_TBar.Create( dwStyle, CRect(-1, -1, -1, -1), pParentWnd, nID );
 m_Bitmap.LoadBitmap( IDR_TOOLBAR );
 m_ImageList.Create( cx, cy, ILC_COLOR8 | ILC_MASK, nBtnNum, nBtnNum );
 m_ImageList.Add( &m_Bitmap, RGB(0, 0, 255) );
 m_TBar.SetImageList( &m_ImageList );
こうなった。CBitmapクラスにリソース(256色で任意パレットのBMP形式)を読み込む。CImageListクラスをCreateメソッドで生成。フラグで256色(ILC_COLOR8)やマスク(ILC_MASK)も指定。CImageListのAddメソッドでビットマップをイメージリストにセット。SetImageListメソッドでイメージリストをツールバーにセット。SetImageListメソッドの2番目の引数は透過になる色を指定する。上の例では青だ。

え~とこれで多分大丈夫のはず。私の場合はうまく動作しているようです。ちょっと前回のがいい加減で心残りだったので続編でフォローと言う事で(^^;

なお結局ツールバー用のイメージはPhotoshopで作成して前回貼り付けたボタンイメージは使わなかった。これもまた良くあるパターン(^^;
2006-01-19 17:29:15 - miyachi - - [プログラミング] -

2006-01-09

256色のツールバー  [by miyachi]

今日は休日。娘たちはダンスレッスンに行くので、朝駅まで車で送って行ってそのままジムに行って一汗かいて風呂にも入ってほか弁を食べてから仕事開始。リリース1の為にちと仕事。おお日記のような書き出しだ(笑)

リリース1ではGUIが必要なのでアイコンとかをマックで作る。普通はIllustratorとかで作るんでしょうが、私としてはLightWave3Dを使って3DCGとして作るほうが早いし楽(^^; 邪道ですがこちらの方が手に馴染んでいるもんで。これが何を意味するアイコンなのかは秘密。

さてツールバーはCStatusBarCtrlを自分でCreateして使っている。ところでVC++6.0だとToolbarリソースのBMPファイルは16色しか編集できない。そこでPhotoshopを使って256色(Windowsシステムパレット)のBMPファイルを作ると編集できないけど読み込みは出来るようになる。早速AddBitmapで読み込んで表示してみる。
  m_TBar.AddBitmap( nBtnNum IDR_TOOLBAR );
う~む、表示はされるがやはり16色になってしまうようだ… 結局先にCBitmapに読み込んでからAddBitmapする事で成功。
  m_Bitmap.LoadBitmap( IDR_TOOLBAR );
  m_TBar.AddBitmap( nBtnNum &m_Bitmap );
.NETだと直っているかもしれませんが、ネットで探してもあんまり情報が無かったので一応情報の為に書いておきましょう。

[2006-01-19:追記]
上の説明が不十分だったので「続256色のツールバー」を書きました(^^;
2006-01-09 15:20:22 - miyachi - - [プログラミング] -