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显示图片