注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

Vc中 CListCtrl使用的小方法  

2011-09-13 23:41:45|  分类: C++(VC)编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Vc中 CListCtrl使用的小方法
一、添加图标
这里注意的是,一定要设置此控件的属性中含有m_cListYes.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_SUBITEMIMAGES |LVS_EX_FULLROWSELECT);第二个属性,这个是必须的。
第一种:
使用LVITEM,其中的iItem相当于行,iSubItem相当于列,但要注意的是在使用了InsertItem(&lvitem)后,我们如果想再设置第二项,那么就得使用SetItem(&lvitem)了,不然会达不到目的。

 //加载位图
 CBitmap bitmap;

 VERIFY(bitmap.LoadBitmap(IDB_IMAGE_ICON)); //装载位图资源,这里也可以用图标,不过函数就得变为LoadIcon()这个API

 //创建图像列表
 if (!m_cImageList.Create(IDB_IMAGE_ICON,20,1,0))
 {
  return false;
 }

 //设置列表框图像
 this->m_cImageList.Add(&bitmap,RGB(255,255,255)/*(COLORREF)0xFFFFF*/);
 this->m_cListYes.SetImageList(&m_cImageList,LVSIL_SMALL);

定义项,也就是行中列的选项:
 LVITEM lvitem;

   lvitem.mask = LVIF_IMAGE|LVIF_TEXT|LVIF_STATE;
   lvitem.iItem = 0;
   lvitem.pszText = "";
   lvitem.iImage = 2;
   lvitem.iSubItem =0;

   m_cListYes.InsertItem(&lvitem);

    LVITEM lvitem1;

   lvitem1.mask = LVIF_IMAGE|LVIF_TEXT|LVIF_STATE;
   lvitem1.iItem = 0;
   lvitem1.pszText = "3333";
   lvitem1.iImage = 0;
   lvitem1.iSubItem = 1;

   m_cListYes.SetItem(&lvitem1);

第二种:
直接使用SetItem的重载的方法。这里不再举例,MSDN上有。
二、动态添加列头
LV_COLUMN lvcolumn;

lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT| LVCF_WIDTH | LVCF_ORDER;
lvcolumn.fmt = LVCFMT_LEFT;
lvcolumn.pszText = "11111";
lvcolumn.iImage = 0;
lvcolumn.iSubItem = 0;
lvcolumn.iOrder = 0;
lvcolumn.cx = 100;
m_cListYes.InsertColumn(0, &lvcolumn);

简单说明一下:
typedef struct _LVCOLUMN {
UINT mask;            //说明此结构中哪些成员是有效的
int fmt;           //列的对齐方式
int cx;            //列的初始宽度
LPTSTR pszText; //列的标题
int cchTextMax;   //pszText所指向的缓冲区的大小
int iSubItem;      //与列关联的子项的索引值,从0开始
int iImage;           //与列关联的图像列表中指定图像的索引值
int iOrder;           //第几列,0代表最左一列
} LVCOLUMN, FAR *LPLVCOLUMN;
typedef struct _LVITEM {
UINT   mask;        //说明LVITEM结构中哪些成员有效
int    iItem;       //项目的索引值(可以视为行号)从0开始
int    iSubItem;    //子项的索引值(可以视为列号)从0开始
UINT   state;       //子项的状态
UINT   stateMask;   //状态有效的屏蔽位
LPTSTR pszText;   //主项或子项的名称
int    cchTextMax; //pszText所指向的缓冲区大小
int    iImage;       //关联图像列表中指定图像的索引值
LPARAM lParam;    //程序定义的32位参数
int iIndent;          //表示图像位置缩进的单位
} LVITEM, FAR *LPLVITEM;
小东西,时想时忘记,写下来吧。记得很早前就写过,可是现在一点点使用的方法都不记得了,只记得一些残碎的东西,大约有很长的时间不做这个东西了。

  评论这张
 
阅读(1180)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017