78上位机VC MFC列表视图实现排序功能
78上位机VC MFC列表视图实现排序功能
功能展示
我们使用EXCEL办公软件时,单击表格的标题,都会实现自动排序效果,但我们VC默认的列表视图控件,并不带这一功能,如何实现呢?我们当前例程通过一个深度封装的类来实现 要点提示 我们当前的派生类通过 class CItemInfo 的成员变量进行列表视窗子项排序功能的实现;例程仅作演示所以一个CItemInfo变量仅支持单列,其他列信息由SetItemText进行额外设置;如果想个CItemInfo变量实现多列排序功能,请DIY 一个CItemInfo类,给其添加更多变量作为列表视窗参数;
实现功能 1.新建基于对话框的应用程序 2.完成对我们当前封装类CSortedHeaderCtrl的使用;复制此类的SORTEDLISTCTRL.CPP,与SORTEDLISTCTRL.H到工程根目录,并加载到工程中
3.添加列表框控件,关联变量CSortedListCtrl m_List;初始化些子项便可查看排序效果 - m_List.InsertColumn(0, "Name", LVCFMT_LEFT, 100); //插入列
- m_List.InsertColumn(1, "Number", LVCFMT_LEFT, 100);
- m_List.InsertColumn(2, "ADRESS", LVCFMT_LEFT, 100);
- CItemInfo *pItemInfo;
- m_List.InsertItem(0, LPSTR_TEXTCALLBACK); //插入行
- pItemInfo = new CItemInfo (0, "第0列");
- m_List.SetItemData(0, (DWORD)pItemInfo); //插入第0列
- m_List.SetItemText(0, 1, "11111111"); //插入第1列
- m_List.SetItemText(0, 2, "11111111"); //播放第2列
- m_List.InsertItem(1, LPSTR_TEXTCALLBACK);
- pItemInfo = new CItemInfo (1, "第1列");
- m_List.SetItemData(1, (DWORD)pItemInfo);
- m_List.SetItemText(1, 1, "222222222");
- m_List.SetItemText(1, 2, "222222222");
- m_List.InsertItem(2, LPSTR_TEXTCALLBACK);
- pItemInfo = new CItemInfo (2, "第2列");
- m_List.SetItemData(2, (DWORD)pItemInfo);
- m_List.SetItemText(2, 1, "333333333");
- m_List.SetItemText(2, 2, "333333333");
复制代码我们来演示下功能实现的整个过程
|