ClistCtrlのカラムの先頭に画像が表示されてしまう – プログラミング – Home

ClistCtrlのカラムの先頭に画像...
 
通知
すべてクリア

[解決済] ClistCtrlのカラムの先頭に画像が表示されてしまう


Nezu
 Nezu
(@Nezu)
ゲスト
結合: 17年前
投稿: 44
Topic starter  

Nezuです、初めまして。
現在、ListCtrlにカラムを追加してサブアイテムにBitmapを表示させるアプリを作って
います。
サブアイテムに読み込んだリソース画像を表示させることはできたのですが、
先頭のカラムにも同じ画像が表示されてしまいます。

リストの拡張スタイルを以下に設定しています。
CListCtrl *clc=(CListCtrl *)GetDlgItem(IDC_LIST1);

clc->SetExtendedStyle(clc->GetExtendedStyle()|LVS_EX_CHECKBOXES |
LVS_EX_SUBITEMIMAGES );

先頭カラムにはチェックボックスのみ表示させ、6番目のカラムに画像を表示させたいの
ですが、なにか情報をお持ちの方、お願いします。

環境
VS2005, MFC, ダイアログアプリケーション


引用未解決
トピックタグ
Nezu
 Nezu
(@Nezu)
ゲスト
結合: 17年前
投稿: 44
Topic starter  

すいません、過去ログで解決しました。
しかし、各行で違う画像を表示させたいのですが
すべて最後に表示する画像になってしまいます。

情報をお持ちの方、お願いします。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

実際にアイテムを Insert / サブアイテムを Set している箇所のコードを掲載してみて
ください。


返信引用
Nezu
 Nezu
(@Nezu)
ゲスト
結合: 17年前
投稿: 44
Topic starter  

シャノンさん、レスありがとうございます。

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のメンバです。
よろしくお願いします。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

ListCtrl の各アイテムは、イメージのコピーを持ちません。
イメージを表示する必要がある場合、その都度、イメージリストから取ってきます。
アイテム 0 のサブアイテム 6 は、「現在のイメージリストの 0 番目のイメージ」とい
う情報しか持ちません。

> m_ListCtrl.SetImageList(&m_imgListB, LVSIL_SMALL);

これをやった時点で、「現在のイメージリスト」が m_imgListB になってしまうので、ア
イテム 0 のサブアイテム 6 は「m_imgListB の 0 番目のイメージ」を表示します。

対策としては、ListCtrl で使うイメージリストは1つだけにし、その中に必要な全ての
イメージを入れて、実行中にイメージリストを変更しないようにする必要があります。


返信引用
Nezu
 Nezu
(@Nezu)
ゲスト
結合: 17年前
投稿: 44
Topic starter  

シャノンさんありがとうございます!
正常に表示されるようになりました。

またなにかあったらよろしくお願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました