关于MFC Listcontrol控件分类显示的问题

先给效果:

效果图


然后贴上代码:

// 将“关于...”菜单项添加到系统菜单中。
m_ListControl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);




m_ListControl.InsertColumn(0,L"fsad");
m_ListControl.InsertColumn(1,L"ertwergwrdg");


m_ListControl.SetColumnWidth(0,120);
m_ListControl.SetColumnWidth(1,120);


int iIndex = m_ListControl.GetItemCount();


LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT;
lvItem.iItem = iIndex;
lvItem.iSubItem = 0;
lvItem.pszText = L"第一个item";
m_ListControl.InsertItem(&lvItem);
lvItem.mask = LVIF_TEXT;
lvItem.iItem = iIndex;
lvItem.iSubItem = 1;
lvItem.pszText = L"第二个item";
m_ListControl.SetItem(&lvItem);


int nIndex = 0;
int nGroupId = 0;
CString strHeader =L"代码签名证书";


m_ListControl.EnableGroupView(TRUE);







// Header-title must be unicode (Convert if necessary)


lg.pszHeader = strHeader.GetBuffer();


lg.cchHeader = strHeader.GetLength();


nGroupId = m_ListControl.InsertGroup(nIndex, &lg );


if (nGroupId==-1)


return nGroupId;






// Insert all current items into this group


for(int nRow = 0; nRow < m_ListControl.GetItemCount(); ++nRow)


{


LVITEM lvItem = {0};


lvItem.mask = LVIF_GROUPID;


lvItem.iItem = nRow;


lvItem.iSubItem = 0;


lvItem.iGroupId = nGroupId;
// lvItem.pszText = L"第三次";
m_ListControl.SetItem( &lvItem );


}


代码可以直接使用,在vs2010编译通过的,直接拷贝放在OnInitDialog()中就行了,。下面解读这段代码。

LVGROUP lg = {0};
lg.cbSize = sizeof(lg);
lg.iGroupId = nGroupId;
lg.state = LVGS_NORMAL;
lg.mask = LVGF_GROUPID | LVGF_HEADER | LVGF_STATE | LVGF_ALIGN;
lg.uAlign = LVGA_HEADER_LEFT;

以上的不说了,lvgroup就是一个组,我们要新建一个组,并在这个组中增加你的数据,以上代码是新建组并初始化这个组,

lg.pszHeader = strHeader.GetBuffer();
lg.cchHeader = strHeader.GetLength();
nGroupId = m_ListControl.InsertGroup(nIndex, &lg );我们要在这个组设置组名,显示的是什么名称,长度,m_ListControl是一个Listcontrol控件的变量。直接插入到你要分组显示的控件中。


下面一个for循环就是你要插入的数据的一个初始化操作(类似),在这个for循环中并没有数据的添加,仅仅作为数据项的增加。


LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT;
lvItem.iItem = iIndex;
lvItem.iSubItem = 0;
lvItem.pszText = L"第一个item";
m_ListControl.InsertItem(&lvItem);
lvItem.mask = LVIF_TEXT;
lvItem.iItem = iIndex;
lvItem.iSubItem = 1;
lvItem.pszText = L"第二个item";
m_ListControl.SetItem(&lvItem);

这个就是我们要添加数据的数据项结构,在这之前我测试了使用不同的结构添加到同一行好像不行,我这里只使用了一个结构变量,只是赋值不同,同时这个和Listcontrol控件的添加方法一样,首先使用insertItem,然后直接setItem,不能全部使用insert插入,这样数据是不能插入进去的。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值