CList 点击表头排序 (3)两种排序的第二种
在头两篇中介绍了CListCtrl::SortItems() 方法的使用和其中的一个排序方法,这篇介绍另一种方法
这种方法不在需要数据绑定,只要确定你点击的表头的第几列就行,过程与第一种是一样的,同样需要SortItems()方法,但是你可以把SetItemDate用在更加有用的地方
(1)同样响应消息函数我就不写了
(2)实现消息函数
void CFinishWellToFind::OnLvnColumnclickListFinishWell(NMHDR *pNMHDR, LRESULT *pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
HDITEM hdrItem;
static int sSortColumn = 0;
m_ListCtrl.GetHeaderCtrl()->GetItem(sSortColumn, &hdrItem);
MyData *tmpp=new MyData;
tmpp->listctrl=&m_ListCtrl;
tmpp->isub=pNMListView->iItem;
int sortnum=(int)GetProp(m_ListCtrl.GetSafeHwnd(),L"SORT_COLUMN");
int sortasc=(int)GetProp(m_ListCtrl.GetSafeHwnd(),L"SORT_DIRECTION");
if(sortnum==pNMListView->iSubItem){
sortasc=(sortasc+1)%2;
SetProp(m_ListCtrl.GetSafeHwnd(),L"SORT_DIRECTION",(HANDLE)sortasc);
}
SetProp(m_ListCtrl.GetSafeHwnd(),L"SORT_COLUMN",(HANDLE)pNMListView->iSubItem);
tmpp->seq=sortasc;
m_ListCtrl.SortItems(CompareFunc,(LPARAM)tmpp);
*pResult = 0;
}
(3)实现内容排序函数
int CALLBACK CompareFunc(LPARAM lParam1,LPARAM lParam2,LPARAM lParamSort)
{
MyData *p=(MyData *)lParamSort;
CListCtrl* list =p->listctrl;
int isub=p->isub;
LVFINDINFO findInfo;
findInfo.flags = LVFI_PARAM;
findInfo.lParam = lParam1;
int iItem1 = list->FindItem(&findInfo, -1);
findInfo.lParam = lParam2;
int iItem2 = list->FindItem(&findInfo, -1);
CString strItem1 =list->GetItemText(iItem1,isub);
CString strItem2 =list->GetItemText(iItem2,isub);
if(p->seq)
return wcscmp(strItem2, strItem1);
else
return -wcscmp(strItem2, strItem1);
}
这种排序只要能明确你点击的是哪列就可以进行排序,但是原理都大同小异
ListCtrl排序到这里就结束,以后如果我发现更好的排序方法我会继续补充
CList 点击表头排序 (3)两种排序的第二种的更多相关文章
- CList 点击表头排序 (2)两种排序方法中其中一种
上一篇讲解SortItem()方法如何使用,虽然都是抄别人的但是就是想让大家有个大概的了解 CList 点击表头排序 (1)SortItems函数 点击表头排序基本思路都是 1.首先响应HDN_ITE ...
- CList 点击表头排序 (1)SortItems函数
点击表头排序整体的思路都是去 CListCtrl类中的方法SortItems去实现 CListCtrl::SortItems的原型是: BOOL SortItems( PFNLVCOMPARE pfn ...
- 解决Geoserver请求跨域的几种思路,第二种思路用过
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景描述 跨域问题是浏览器同源安全制引起的特别常见的问题.不同前端语 ...
- 非常强大的table根据表头排序,点击表头名称,对其内容排序
js代码: /** * 通过表头对表列进行排序 * * @param sTableID * 要处理的表ID<table id=''> * @param iCol * 字段列id eg: 0 ...
- C#根据字体名通过注册表获取该字体文件路径(win10)两种方法推荐第二种
方法一: 直接先上源码: private System.Collections.Generic.SortedDictionary<string, string> ReadFontInfor ...
- ASP.NET MVC 下拉框的传值的两种方式(第二种方式未完成)
控制器代码: public ActionResult Index() { List<SelectListItem> sli = new List<SelectListItem> ...
- word模板导出的几种方式:第二种:C#通过模板导出Word(文字,表格,图片) 占位符替换
原文出处:https://www.cnblogs.com/ilefei/p/3508463.html 一:模板的创建 (注意文件后缀只能是.docx或.doct) 在需要位置 插入-文档部件-域, ...
- H5 video标签的第二种格式
36-video标签的第二种格式 2.第二种格式存在的意义: 由于视频数据非常非常的重要, 所以五大浏览器厂商都不愿意支持别人的视频格式, 所以导致了没有一种视频格式是所有浏览器都支持的 这个时候W3 ...
- QT中Qtableview视图表格中点击表头进行排序
用QT写了一个小工具,主要是对Excel中大量的数据进行计算和显示. 写了有一段时间,然后断断续续的做一些修改和完善. 因为要显示的数据有多列,很自然的会想到要能够对显示的数据进行排序.如果直接操作m ...
随机推荐
- atitit.js 与c# java交互html5化的原理与总结.doc
atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略 1 1.1. Js交互 1 1.2. 动态參数个数 1 1.3. 事件监听 2 2. ...
- linux内核计算时间差以及jiffies溢出
jiffies是每一个时钟中断,都会加1.这就导致一个问题.不管jiffies(一般来说是unsigned long类型)多少个字节,总有溢出的时候. 更极端的时候.当期jiffies是0xfffff ...
- js最近天数
//七天查询 recent(6); //30天查询 recent(30); //最近天数 var recent=function(arg){ var myDate = new Date(); //获取 ...
- JsonRequestBehavior.AllowGet 方便浏览器调试
[HttpGet] public ActionResult getCoversationList(int CustomerId) { // 获取用户相关的聊天数据,包括个人,群,系统(可以单独获取) ...
- 用三层交换建立企业VLAN
650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" ...
- Coderfroces 864 E. Fire(01背包+路径标记)
E. Fire http://codeforces.com/problemset/problem/864/E Polycarp is in really serious trouble — his h ...
- javaScript 立即执行函数学习笔记
立即执行函数: 即执行函数(Immediate Functions),立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行 立即执行函数(immediate function)术语不是在ECM ...
- mysql 查看单个表每个索引的大小
/*单个表每个索引的大小*/ SELECT sum(stat_value) pages, table_name part, index_name, concat(,),'M',' rows') * @ ...
- jQuery.inArray和splice删除数组元素
不知道数组下标的情况下,删除数组对应元素.实例: var arrays = ['a','b','c','d']; arrays.splice($.inArray('c',arrays),1); ale ...
- 【java】itoo项目实战之大数据查询之使用 new map 优化hibernate之级联查询
在我的上一篇博客<[java]itoo项目实战之hibernate 懒载入优化性能>中,我曾提到过学生数据有2万条,查询数据十分的慢,这是让人非常受不了的事情.看着页面进度条一直转着圈圈, ...