CListCtrl非第一列添加图标
来源:互联网 发布:卡片式电脑windows 编辑:程序博客网 时间:2024/06/16 02:10
一.CListCtrl在第一列添加图标
CListCtrl可以很方便的在第一列添加图标, 并且在不同的显示方式(1:LVS_ICON: 为每个item显示大图标;2:LVS_SMALLICON: 为每个item显示小图标;3: LVS_LIST: 显示一列带有小图标的item;4:LVS_REPORT: 显示item详细资料)下, 都可以把第一列的图标显示出来.。
具体方法为:
1.在Dialog的头文件中声明CListCtrl控件和CImageList类变量
CListCtrl m_lstEnumDev;
CImageList m_SmallIcon; //保存小图标
CImageList m_LargeIcon; //保存大图标
2.在Dialog的OnInitDialog()中
/*******设置列表表头内容和宽度*****/
m_lstEnumDev.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EDITLABELS| LVS_EX_SUBITEMIMAGES ); //一定要设置LVS_EX_SUBITEMIMAGES
m_lstEnumDev.InsertColumn(0,"名称");
m_lstEnumDev.SetColumnWidth(0,80);
。。。。。。
/**********绑定SmallIcon和LargeIcon到CListCtrl上******/
m_SmallIcon.Create(16,16, 1, 10, 4);
m_LargeIcon.Create(32,32, 1, 10, 4);
m_SmallIcon.Add(AfxGetApp()->LoadIcon(IDI_ICON_SMALL));
m_LargeIcon.Add(AfxGetApp()->LoadIcon(IDI_ICON_LARGE));
m_lstEnumDev.SetImageList(&m_LargeIcon,LVSIL_NORMAL);
m_lstEnumDev.SetImageList(&m_SmallIcon,LVSIL_SMALL);、
/********显示列表中的信息*********/
ShowListInfo();
3.在ShowListInfo()中显示列表中的信息
for (int i=0;i<iItemNum;i++)
{
//名称
LV_ITEM lvitem;
memset ((char *) &lvitem, '\0', sizeof (LV_ITEM));
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvitem.iItem = i;
lvitem.iSubItem = 0;
lvitem.stateMask = 0;
lvitem.iImage = 0; //显示不同的图标时,可以把一个int 变量赋给这个属性值
lvitem.pszText = "名称";
m_lstEnumDev.InsertItem (&lvitem);
}
实现以上3步,就可以显示带图标的文本项了。
4.可在Dialog的头文件中声明CComboBox m_cmbViewType变量,控制不同的显示方式。
/******初始化下拉列表*****/
m_cmbViewType.AddString("详细信息");
m_cmbViewType.AddString("平铺");
m_cmbViewType.AddString("图标");
m_cmbViewType.AddString("列表");
m_cmbViewType.SetCurSel(0);
5.相应CComboBox的CBN_SELCHANGE消息,实现不同的显示方式
int nSel = m_cmbViewType.GetCurSel();
switch(nSel)
{
case 0:
m_lstEnumDev.ModifyStyle ( LVS_SMALLICON | LVS_LIST | LVS_ICON,LVS_REPORT, TRUE);
break;
case 1:
m_lstEnumDev.ModifyStyle ( LVS_SMALLICON | LVS_LIST | LVS_REPORT,LVS_ICON, TRUE);
break;
case 2:
m_lstEnumDev.ModifyStyle (LVS_ICON | LVS_LIST | LVS_REPORT | LVS_OWNERDRAWFIXED, LVS_SMALLICON, TRUE);
break;
case 3:
m_lstEnumDev.ModifyStyle (LVS_ICON | LVS_SMALLICON | LVS_REPORT | LVS_OWNERDRAWFIXED, LVS_LIST, TRUE);
break;
default:
m_lstEnumDev.ModifyStyle ( LVS_SMALLICON | LVS_LIST | LVS_ICON,LVS_REPORT, TRUE);
break;
}
经过以上5步,即可实现,在不同的显示方式下,使列表的第一列显示(相同或不同的)图标。
二.CListCtrl非第一列添加图标
如果除了要使第一列显示图标外,还要使也其他列显示。只需要按照第一列那样声明一个LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvitem.iItem = i;
lvitem.iSubItem = j; //列数
lvitem.stateMask = 0;//显示不同的图标时,可以把一个int 变量赋给这个属性值
lvitem.iImage = 0;
如果只让非第一列显示图标,就会出现一个问题——CImageList是和CListCtrl的第一列绑定的,这个第一列是逻辑上的。
那可不可以使(视图上的)非第一列变成(逻辑上的)的第一列呢?
我的实现思想是:显示在视图上的非第一列其实是CListCtrl的逻辑上的第一列,即:m_lstEnumDev.InsertColumn(0,"名称");这个" 0" 其实就是逻辑上的第一列。
那该怎么实现呢?
我的实现思想是:使第一列和其他的某列交换位置。调用了CListCtrl 的GetHeaderCtrl()方法,通过表头控件CHeaderCtrl的SetOrderArray设置(视图上的)显示顺序。
/*******第一和最后一列交换位置***/
CHeaderCtrl *pmyHeaderCtrl = m_lstEnumDev.GetHeaderCtrl();
int nCount = pmyHeaderCtrl->GetItemCount();
LPINT pnOrder = (LPINT) malloc(nCount*sizeof(int));
ASSERT(pnOrder != NULL);
pmyHeaderCtrl->GetOrderArray(pnOrder, nCount);
int nTemp;
nTemp = pnOrder[0];
pnOrder[0] = pnOrder[nCount-1];
pnOrder[nCount-1] = nTemp;
pmyHeaderCtrl->SetOrderArray(nCount, pnOrder);
free(pnOrder);
这样再显示时,在视图上,第一列就变成最后一列了。当选择不同的显示方式时,都可以看到图标。
三.有关CListCtrl和CHeadCtrl
转自:http://wanderwarriorhsiao.blog.hexun.com/13005981_d.html
- CListCtrl非第一列添加图标
- mfc 在ListCtrl控件的非第一列添加图标
- 转:mfc 在ListCtrl控件的非第一列添加图标
- CListCtrl第一列数据居中
- CListCtrl列表框添加与更改图标
- CListCtrl列表框添加与更改图标
- CListCtrl列表框添加与更改图标
- CListCtrl列表框添加与更改图标
- MFC点点滴滴——ClistCtrl添加图标
- CListCtrl列表框添加与更改图标
- CListCtrl第一列不能设置对齐方式的解决办法
- listctrl第一列加图标的问题
- CListCtrl图标设置
- CListCtrl 图标列表用法
- 绑定图标到 CListCtrl
- ASPxGridView:添加一个非绑定列
- 添加一列到DataTable的第一列
- 虚拟列表第一列显示图标的办法
- div的border-style 边框风格属性 .
- java生成二维码
- 求和公式的推导(1.2.3)
- C#验证码
- android paint中几个常用的方法释义
- CListCtrl非第一列添加图标
- 3个开源TTS(三)flite的简要分析与espeak的选择
- 在IE7/IE8 关闭窗口,上传图片无法预览,window.status无效问题解决办法
- 消息循环(Message loop)学记 GetMessage TranslateMessage DispatchMessage
- 轻量级JDBC封装DBUtils简单教程
- 我的ActivityGroup
- Flash图表AnyChart应用教程总结
- 图:出场顺序号码随机抽取及公开展示,并行随机抽取多个题目号码及公开展示-软件原型设计
- 10名蝴蝶僵尸网络黑客被FBI逮捕