Nezuです、初めまして。
現在、ListCtrlにカラムを追加してサブアイテムにBitmapを表示させるアプリを作って
います。
サブアイテムに読み込んだリソース画像を表示させることはできたのですが、
先頭のカラムにも同じ画像が表示されてしまいます。
リストの拡張スタイルを以下に設定しています。
CListCtrl *clc=(CListCtrl *)GetDlgItem(IDC_LIST1);
clc->SetExtendedStyle(clc->GetExtendedStyle()|LVS_EX_CHECKBOXES |
LVS_EX_SUBITEMIMAGES );
先頭カラムにはチェックボックスのみ表示させ、6番目のカラムに画像を表示させたいの
ですが、なにか情報をお持ちの方、お願いします。
環境
VS2005, MFC, ダイアログアプリケーション
すいません、過去ログで解決しました。
しかし、各行で違う画像を表示させたいのですが
すべて最後に表示する画像になってしまいます。
情報をお持ちの方、お願いします。
実際にアイテムを Insert / サブアイテムを Set している箇所のコードを掲載してみて
ください。
シャノンさん、レスありがとうございます。
CBitmap bmpA
CBitmap bmpB;
COLORREF rgbTransparentColor;
rgbTransparentColor = RGB(255,255,255);
m_imgListA.Create(16 , 16, ILC_MASK | ILC_COLOR32, 0, 0);
bmpA.LoadBitmap(IDB_COMPLETE);
m_imgListA.Add(&bmpA, rgbTransparentColor);
m_ListCtrl.SetImageList(&m_imgListA, LVSIL_SMALL);
m_ListCtrl.SetItem(0, 6, LVIF_IMAGE, _T("),0,0,0,0);
m_imgListB.Create(16 , 16, ILC_MASK | ILC_COLOR32, 0, 0);
bmpB.LoadBitmap(IDB_UPDATING);
m_imgListB.Add(&bmpB, rgbTransparentColor);
m_ListCtrl.SetImageList(&m_imgListB, LVSIL_SMALL);
m_ListCtrl.SetItem(1, 6, LVIF_IMAGE, _T("),0,0,0,0);
m_imgListAとm_imgListBはXXXDlgクラスのCImageListのメンバです。
よろしくお願いします。
ListCtrl の各アイテムは、イメージのコピーを持ちません。
イメージを表示する必要がある場合、その都度、イメージリストから取ってきます。
アイテム 0 のサブアイテム 6 は、「現在のイメージリストの 0 番目のイメージ」とい
う情報しか持ちません。
> m_ListCtrl.SetImageList(&m_imgListB, LVSIL_SMALL);
これをやった時点で、「現在のイメージリスト」が m_imgListB になってしまうので、ア
イテム 0 のサブアイテム 6 は「m_imgListB の 0 番目のイメージ」を表示します。
対策としては、ListCtrl で使うイメージリストは1つだけにし、その中に必要な全ての
イメージを入れて、実行中にイメージリストを変更しないようにする必要があります。
シャノンさんありがとうございます!
正常に表示されるようになりました。
またなにかあったらよろしくお願いします。