MFC CListCtrl 显示图片

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

当当小螳螂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值