求一个,不用派生CListCtrl(不是listview)可以排序中文,英文,整数的代码,由于急用,那位大哥帮忙贴一下,感激~~~
解决方案 »
- 有一些关于界面的问题想请大家帮忙解答一下
- 遇到BUG,求助.Exception code: C0000005 ACCESS_VIOLATIONFault address: 7C3417FB 01:00
- MFC基于对话框编程中自定义的类中如何访问对话框类的成员变量?
- 改变CEdit类里特定字符的颜色
- CStatic 绘图为什么显示不出来??
- 现在用什么播放视频最合适?
- 请帮我看看以下两种读文本文件的方法问题在哪里。谢谢!
- vc5.0里应用crystal的问题
- COleDateTime format问题
- MFC ActiveX 视频Net播放 中的 Socket 接收问题
- ListView刷新问题,在线等.
- 兔子与胡萝卜
http://www.codeguru.com/cpp/controls/editctrl/article.php/c523/
BOOL SortItems(
PFNLVCOMPARE pfnCompare,
DWORD_PTR dwData
);
// Sort items by associated lParam
static int CALLBACK
MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
return lParam1 < lParam2;
}
pmyListCtrl->SortItems(MyCompareProc, (LPARAM) pmyListCtrl);
其中:
BOOL SortItems(
PFNLVCOMPARE pfnCompare,
DWORD_PTR dwData
);
pfnCompare为比较函数的指针,比较函数原型:
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2,
LPARAM lParamSort);
dwData为自定义的数据,这里传入ListCtrl的实例指针。
// Sort the item in reverse alphabetical order.
static int CALLBACK
MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
// lParamSort contains a pointer to the list view control.
CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
//lParamSort参数就是上面SortItems的第二个参数,传入的是(LPARAM) pmyListCtrl,这里还原成ListCtrl的实例指针 CString strItem1 = pListCtrl->GetItemText(lParam1, 0);
CString strItem2 = pListCtrl->GetItemText(lParam2, 0);
//lParam1,lParam2参数是参与比较的两个列表项的ItemData,在插入项目时指定为索引值。这里是对第一列排序,所以GetItemText第二个参数是0,如果需要对其他列排序,可以在上面响应LVN_COLUMNCLICK消息的时候把子项索引保存下来在这里调用。 return strcmp(strItem2, strItem1);这里调用函数strcmp来实现倒序排列,比较函数的返回值决定了排列顺序,返回负数第一项在第二项前面,返回正数第一项在第二项后面。
}