MFC CListCtrl显示图片

CListCtrl是列表控件

CImageList是图片列表控件

CListCtrl要想显示图片需要设置CImageList,关联之后,使用索引设置图片

	CListCtrl *pList = new CListCtrl();
	rect.left = 10;
	rect.top = 30;
	rect.right = clientRect.right - 10;
	rect.bottom = 300;
	pList->Create(WS_CHILD | WS_VISIBLE | LVS_EX_GRIDLINES | WS_CLIPSIBLINGS, rect, this, ++maxControlID);
	pList->ModifyStyle(0, LVS_REPORT);
	pList->SetExtendedStyle(pList->GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_SUBITEMIMAGES);

	//图片列表,关联list
	CImageList *pImageList = new CImageList();

	//好像宽高只能比原图小,不能比原图大
	pImageList->Create(46, 46, ILC_COLOR24 | ILC_MASK, 8, 1);

	CBitmap bitmap;
	CImage image;
	//显示bmp,
	//HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, _T(".\\res\\trophy.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

	//显示png
	image.Load(_T(".\\res\\trophy.png"));
	HBITMAP hBitmap = (HBITMAP)image;

	bitmap.Attach(hBitmap);
	pImageList->Add(&bitmap, RGB(0xff, 0xff, 0xff));

	//定义表格的各列名称和宽度:
	pList->InsertColumn(0, _T("姓名"), LVCFMT_CENTER, 100);
	pList->InsertColumn(1, _T("学号"), LVCFMT_CENTER, 80);
	pList->InsertColumn(2, _T("年龄"), LVCFMT_CENTER, 70);

	//plistctrl关联pImageList
	pList->SetImageList(pImageList, LVSIL_SMALL);

	int listindex;
	LV_ITEM lvItem;

	listindex = pList->GetItemCount();

	TCHAR *ptszText = new TCHAR[100];
	_tcscpy(ptszText, _T("拉拉"));

	lvItem.mask = LVIF_IMAGE | LVIF_TEXT;
	lvItem.iItem = listindex;
	lvItem.iSubItem = 0;
	lvItem.iImage = 0;
	lvItem.pszText = ptszText;
	pList->InsertItem(&lvItem);

效果图如下

MFC CListCtrl显示图片_第1张图片

你可能感兴趣的:(mfc)