CImageListクラスのオブジェクトにイメージを登録し、CImageListオブジェクトをツリーコントロールに登録する。
ダイアログの場合、まずダイアログクラスにCImageListクラスのメンバ変数m_imageListを用意する。
次にOnInitDialog関数に以下の処理を記述する。
CBitmap bitmap;
// イメージリストの初期化
// 4番目の引数はリストが保持するイメージの数。5番目はリストを拡張するときの拡張イメージ数
m_imageList.Create(16, 16, ILC_MASK, 3, 2);
// ビットマップイメージをイメージリストに追加する
// Add関数の2番目の引数は透過色(マスク)を表す
bitmap.LoadBitmap(IDB_BITMAP1);
m_imageList.Add(&bitmap, RGB(0,128,128));
bitmap.DeleteObject();
bitmap.LoadBitmap(IDB_BITMAP2);
m_imageList.Add(&bitmap, RGB(0,128,128));
bitmap.DeleteObject();
bitmap.LoadBitmap(IDB_BITMAP3);
m_imageList.Add(&bitmap, RGB(0,128,128));
bitmap.DeleteObject();
// ツリーコントロールにイメージリストを設定
m_wndTree1.SetImageList(&m_imageList, TVSIL_NORMAL);
ツリーコントロールにアイテムを挿入する。
InsertItem関数の2、3番目の引数はイメージリストに登録されたイメージのインデックスを指定する。
2番目は通常時、3番目は選択時のイメージである。
4番目の引数は親となるツリーアイテムであり、これを省略(あるいはNULLを指定する)とルートアイテムになる。
以下の例では「横浜市」というアイテムは「神奈川県」の子となり、「西区」というアイテムは「横浜市」の子になる。
HTREEITEM hItemRoot = m_wndTree1.InsertItem("神奈川県", 0, 1);
HTREEITEM hItemYkhm = m_wndTree1.InsertItem("横浜市", 0, 1, hItemRoot);
m_wndTree1.InsertItem("西区", 2, 2, hItemYkhm);
m_wndTree1.InsertItem("中区", 2, 2, hItemYkhm);
m_wndTree1.InsertItem("神奈川区", 2, 2, hItemYkhm);
m_wndTree1.InsertItem("横須賀市", 2, 2, hItemRoot);
m_wndTree1.InsertItem("相模原市", 2, 2, hItemRoot);
m_wndTree1.InsertItem("藤沢市", 2, 2, hItemRoot);