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);

效果图如下

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MFC CListCtrl控件可以响应多种事件,以下是常见的事件及其处理函数: 1. LVN_ITEMCHANGED:当列表项的选中状态改变时触发。可以使用以下代码处理: ``` void CMyDialog::OnItemChangedListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if ((pNMListView->uChanged & LVIF_STATE) && (pNMListView->uNewState & LVIS_SELECTED)) { // 处理选中项改变事件 } *pResult = 0; } ``` 2. LVN_COLUMNCLICK:当列表头的某一列被单击时触发。可以使用以下代码处理: ``` void CMyDialog::OnColumnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; int nColumn = pNMListView->iSubItem; // 处理列单击事件 *pResult = 0; } ``` 3. LVN_BEGINLABELEDIT:当用户开始编辑某一项时触发。可以使用以下代码处理: ``` void CMyDialog::OnBeginLabelEditListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { LV_DISPINFO* pLvdi = (LV_DISPINFO*)pNMHDR; LVITEM* pItem = &(pLvdi->item); *pResult = FALSE; // 设置为TRUE表示禁止编辑 } ``` 4. LVN_ENDLABELEDIT:当用户完成编辑某一项时触发。可以使用以下代码处理: ``` void CMyDialog::OnEndLabelEditListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { LV_DISPINFO* pLvdi = (LV_DISPINFO*)pNMHDR; LVITEM* pItem = &(pLvdi->item); // 处理编辑完成事件 *pResult = 0; } ``` 5. LVN_ITEMACTIVATE:当用户双击某一项或按下回车键时触发。可以使用以下代码处理: ``` void CMyDialog::OnItemActivateListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; // 处理项激活事件 *pResult = 0; } ``` 6. LVN_GETDISPINFO:当控件需要获取某一项的信息时触发。可以使用以下代码处理: ``` void CMyDialog::OnGetDispInfoListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NMLVDISPINFO* pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR); LVITEM& lvItem = pDispInfo->item; // 设置项的信息 *pResult = 0; } ``` 7. LVN_DELETEITEM:当某一项被删除时触发。可以使用以下代码处理: ``` void CMyDialog::OnDeleteItemListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NMLISTVIEW* pNMLV = reinterpret_cast<NMLISTVIEW*>(pNMHDR); // 处理删除项事件 *pResult = 0; } ``` 以上是常见的事件及其处理函数,开发者可以根据实际需求选择相应的事件进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值