2016-05-29 7 views
0

私は行内に自分のデータを示すCListCtrlを持っています。それは2つの列を持っています。今実際にアイコンを表示する別の列を追加する必要があります。列のセルにアイコンを追加する方法CListCtrl

以下のように行項目を追加
// set look and feel 
listCtrl.SetExtendedStyle(listCtrl.GetExtendedStyle() | columnStyles); 

for (const auto dataValue : dataTable) 
{ 
    int rowIndex = listCtrl.GetItemCount(); 
    listCtrl.InsertItem(rowIndex, dataValue.at(0).c_str()); 
    for (int colIndex = 1; colIndex < listCtrl.GetHeaderCtrl()->GetItemCount(); ++colIndex) 
    { 
     listCtrl.SetItemText(rowIndex, colIndex, dataValue.at(colIndex).c_str()); 
    } 
} 

I行のアイコンを含むことになる新しい列を追加しました。

追加された列のセルにアイコンを追加する方法がわかりません。それが最初の列に追加されたと考えてください。

お勧めします。

+0

ええと 'SetItem'関数を呼び出す:あなたのリストのOnCreate機能に続いて

CImageList m_ImageList; 

:だからあなたのリストの派生クラスで、メンバーを追加します。 'nImage'パラメータのオーバーロードは、あなたのCListCtrlのImageListの画像のインデックスに設定します。 https://msdn.microsoft.com/en-us/library/f3wdxcd3.aspx –

答えて

0

イメージは最初の列の左側に表示されるため、新しい列は必要ありません(テキストの場合、LVS_REPORTスタイルを使用していると仮定します)。

あなたのリストのアイテムと同じ数の画像を持つメンバー画像リストが必要です。 、

m_ImageList.Create(32, 32, ILC_COLOR24, numberOfEnableParts, 1); 
m_ImageList.SetImageCount(n); 

for (int i = 0; i< n; i++) 
{ 

    if(InsertItem(n, sText) != -1) 
    { 
     //set text of columns with SetItemText 
     //... 
     // don't know if you use a icon or a bitmap; next line I did it for the second case 
     m_ImageList->Replace(n, CBitmap::FromHandle(hBmp), (CBitmap*)NULL); 

     //then, associate the item with its own image of the image list 

     LVITEM lvi; 
     lvi.iItem= i; 
     lvi.iSubItem= 0; 
     lvi.mask = LVIF_IMAGE; 
     lvi.iImage= i; 
     SetItem(&lvi); 

    } 
} 


SetImageList(m_ImageList, LVSIL_SMALL); 
関連する問題