CListCTrl控件排序(一)
来源:互联网 发布:第三世界首都 知乎 编辑:程序博客网 时间:2024/05/20 02:27
来源网站:http://blog.csdn.net/hgy413/article/details/6719908
列表控件(CList
·CListCtrl
函数原型为:
BOOL CListCtrl:
其中第一个参数为全局
第二个参数为用户数据
该函数返回-1,代表
返回1代表第一项排应
返回0代表两项相等。
int CALLBACK ListCompar
其中第三个参数为调用
第一和第二个参数为用
BOOL CListCtrl:
·我们什么时候需要排
实现这点可以在父窗口
例子:
//排序回调函数实现 static int CALLBACK MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { <span style="white-space:pre"></span>// lParamSort contains a pointer to the list view control. <span style="white-space:pre"></span>// The lParam of an item is just its index. <span style="white-space:pre"></span>//以第一列为根据排序 <span style="white-space:pre"></span>CListCtrl* pListCtrl = (CListCtrl*) lParamSort; <span style="white-space:pre"></span>CString strItem1 = pListCtrl->GetItemText(lParam1, 0); <span style="white-space:pre"></span>CString strItem2 = pListCtrl->GetItemText(lParam2, 0); //比较两个数 <span style="white-space:pre"></span>LPCTSTR s1=(LPCTSTR)strItem1; <span style="white-space:pre"></span>LPCTSTR s2=(LPCTSTR)strItem2; <span style="white-space:pre"></span>int n1=atoi(s1); <span style="white-space:pre"></span>int n2=atoi(s2);if (n1>n2) <span style="white-space:pre"></span>return -1; <span style="white-space:pre"></span>else <span style="white-space:pre"></span>return 1; } <span style="white-space:pre"></span>void C***::OnColumnclickList(NMHDR* pNMHDR, LRESULT* pResult) { <span style="white-space:pre"></span>NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; <span style="white-space:pre"></span>// TODO: Add your control notification handler code here //调用排序函数 <span style="white-space:pre"></span>m_ShowData.SortItems( MyCompareProc, (DWORD)&m_ShowData ); <span style="white-space:pre"></span>*pResult = 0;}
整个过程是这样的: 当你点击列表控件的表
首先,要让CList
for(int i = 0; i < listCtrl.G
{
SetItemDat
}
这样写的原因下面马上
接下来就是调用CLi
int CALLBACK listCompar
这里的lParam1
最后就是实现那个回调
/////////////////////////////////////////// //按第六列排序 int CALLBACK listCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { CListCtrl* pListCtrl = (CListCtrl*)lParamSort; CString strItem1 = pListCtrl->GetItemText(lParam1,5); CString strItem2 = pListCtrl->GetItemText(lParam2,5); LVCOLUMN Vol; CString csStr(""); TCHAR szCol[MAX_PATH]; Vol.pszText = szCol; Vol.mask=LVCF_TEXT; Vol.cchTextMax=sizeof(szCol); pListCtrl->GetColumn(0,&Vol); csStr = CString(Vol.pszText); if (csStr.Right(1) == CString("▼")) { return _tcscmp(strItem2.GetBuffer(MAX_PATH),strItem1.GetBuffer(MAX_PATH)); } else if (csStr.Right(1) == CString("▲")) { return _tcscmp(strItem1.GetBuffer(MAX_PATH),strItem2.GetBuffer(MAX_PATH)); } else { return _tcscmp(strItem1.GetBuffer(MAX_PATH),strItem2.GetBuffer(MAX_PATH)); } } /////////////////// void CManageView::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; // TODO: Add your control notification handler code here CListCtrl &m_ListCtrl = GetListCtrl();for(int i = 0; i < m_ListCtrl.GetItemCount(); ++i) m_ListCtrl.SetItemData(i,i); m_ListCtrl.SortItems(listCompare,(LPARAM)&m_ListCtrl);*pResult = 0; }
- CListCTrl控件排序(一)
- CListCtrl控件点标题排序
- CListCtrl控件详解(一)
- CListCtrl控件(2)可排序的CListCtrl控件
- CListCtrl控件(3)可排序的CListCtrl控件
- CListCtrl控件(4)可排序的CListCtrl控件
- CListCtrl控件(3)可排序的CListCtrl控件
- CListCtrl控件(3)可排序的CListCtrl控件
- 【转帖】VC中使CListCTrl控件排序
- 37.VC(custom)-CListCTrl控件排序
- MFC中使CListCTrl控件排序
- CListCtrl控件使用方法总结(一)
- CListCtrl控件
- CListCtrl控件
- CListCtrl控件
- CListCtrl控件
- CListCtrl 排序
- CListCtrl排序
- 运行Java程序批处理bat
- Linux chmod、chown命令
- Android倒计时电子钟的实现(上篇)
- MIPS 平台 Android 移植过程记录2_kernel升级 (2.6.29.4 -> 3.0.72)
- CKEditor 3.6.2配置
- CListCTrl控件排序(一)
- 基带 频带
- Mybatis分页解决方案
- apache tomcat 闪退
- Maven学习笔记008——Maven遇到的问题汇总
- 第十七周项目四(二):两个人的生日之差
- 移动端区间滑块,仿 上一篇pc端的
- android没有告诉你的usr模式和eng模式的区别
- 20141219 N2