在ListCtrl控件中插入图标

在ListCtrl控件中插入图标

值得注意的是:关联到ListCtrl的CImageList的生存时间要长于或等于你显示图标的ListCtrl的生存时间。也就是原博客中提到的:“顺便说一句,准备附属到CListCtrl控件的CImageList对象必须是全局性的,比如可以是类的成员,否则就算其他操作都都正确也看不到图标。”

m_img_list定义为对话框的成员。下面是部分代码


m_relist.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES);
m_relist.ModifyStyle(0, LVS_REPORT);
m_relist.InsertColumn(0, (CString)"识别结果", LVCFMT_LEFT, 200);//插入列
m_img_list.Create(16, 16, ILC_COLOR4, 5, 5);
m_img_list.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));//加载图标
m_relist.SetImageList(&m_img_list, LVSIL_SMALL);//关联图片列表

LV_ITEM lvitem;
memset((char *)&lvitem, 0, sizeof(LV_ITEM));
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvitem.iItem = 1;//行标
lvitem.iSubItem = 0;
lvitem.stateMask = 0;
lvitem.iImage = 0;    
lvitem.pszText = TEXT("川A f4213");//(LPSTR)(LPCSTR)Name[i];
m_relist.InsertItem(&lvitem);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 MFC ,可以通过以下步骤为 ListCtrl 件添加右键自定义菜单: 1.在 C++ 代码添加 WM_CONTEXTMENU 消息处理函数。这个消息处理函数将在用户右键单击 ListCtrl 件时被调用。 2.在 WM_CONTEXTMENU 消息处理函数,获取鼠标单击位置的屏幕坐标,并将其转换为 ListCtrl 件的客户区坐标。 3.使用 HitTest() 函数获取鼠标单击位置所在的 ListCtrl 件项,并保存其索引。 4.创建自定义菜单,并使用 TrackPopupMenu() 函数在鼠标单击位置显示菜单。 下面是一个示例代码,可以作为参考: ``` void CMyListCtrlDlg::OnContextMenu(CWnd* pWnd, CPoint point) { CMenu menu; menu.CreatePopupMenu(); // 创建自定义菜单 // 将菜单项添加到自定义菜单,ID 可以自行定义 menu.AppendMenu(MF_STRING, ID_MENUITEM1, _T("菜单项1")); menu.AppendMenu(MF_STRING, ID_MENUITEM2, _T("菜单项2")); // 将屏幕坐标转换为客户区坐标 CPoint ptClient = point; ScreenToClient(&ptClient); // 获取鼠标单击位置所在的 ListCtrl 件项 int nItem = HitTest(ptClient); // 如果鼠标单击位置在 ListCtrl 件项上 if (nItem >= 0) { // 选择当前项 SetItemState(nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); // 显示自定义菜单 menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, this); } else { // 如果鼠标单击位置不在 ListCtrl 件项上,则显示默认菜单 CDialogEx::OnContextMenu(pWnd, point); } } ``` 需要注意的是,上述代码只是一个示例,实际应用需要根据具体情况进行修改。同时,还需要在资源文件添加自定义菜单的定义和命令 ID 的定义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值