MFC CListCtrl 显示图片
- MFC CListCtrl 显示图片
- PreCreateWindow中设置风格没有起作用
- 在OnCreate中设置CListCtrl的风格最合适
- 在OnInitialUpdate中添加数据最合适
- 需要设置CImageList,资源是我自己搞的一个图片资源
- ps:参考链接
MFC CListCtrl 显示图片
在使用MFC的CListCtrl的时候容易有需求列里面显示图片,在网上搜罗了一番,踩坑后总结一下,主要是使用CListView的时候怎么显示列图片
PreCreateWindow中设置风格没有起作用
BOOL CMFCCompleteView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改
//这里主要针对cwnd
// CREATESTRUCT cs 来修改窗口类或样式
return CListView::PreCreateWindow(cs);
}
在OnCreate中设置CListCtrl的风格最合适
//创建出来各种控件以后,设置控件的各种属性
int CMFCCompleteView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CListView::OnCreate(lpCreateStruct) == -1)
return -1;
m_ListImageList.Create(32, 32, ILC_COLOR24, 4, 4);
CBitmapEx bitmap;
if (!bitmap.LoadBitmapFromFile(_T("res/bit.bmp")))
{
return -1;
}
CBitmapEx bit2;
if (!bit2.LoadBitmapFromFile(_T("res/bit2.bmp")))
{
return -1;
}
m_ListImageList.Add(&bitmap, RGB(255, 0, 0));
m_ListImageList.Add(&bit2, RGB(255, 0, 0));
int nCount = m_ListImageList.GetImageCount();
// TODO: 在此添加您专用的创建代码
CListCtrl& list = GetListCtrl();
list.SetImageList(&m_ListImageList, LVSIL_SMALL);
list.ModifyStyle(0, LVS_REPORT);
list.SetExtendedStyle(list.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_SUBITEMIMAGES);
list.InsertColumn(0, "id", LVCFMT_LEFT, 200);
list.InsertColumn(1, "name", LVCFMT_LEFT, 200);
list.InsertColumn(1, "sex", LVCFMT_LEFT, 200);
list.InsertColumn(1, "add", LVCFMT_LEFT, 200);
return 0;
}
在OnInitialUpdate中添加数据最合适
void CMFCCompleteView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
CListCtrl& list = GetListCtrl();
for (int idx = 0; idx < 100; idx++)
{
int row = list.InsertItem(idx, _T("Test"), idx%16);
list.SetItem(row, 1, LVIF_IMAGE| LVIF_TEXT, _T("第二列"),1,0,0,0);
list.SetItem(row, 2, LVIF_IMAGE | LVIF_TEXT, _T("第三列"), 2, 0, 0, 0);
list.SetItem(row, 3, LVIF_IMAGE | LVIF_TEXT, _T("第四列"), 3, 0, 0, 0);
}
}
需要设置CImageList,资源是我自己搞的一个图片资源
ps:参考链接
CListCtrl列添加图片
CListCtrl显示图片