VC ListCtrl 列表 单击排序怎么实现

VCListCtrl列表单击排序怎么实现最好事有实例,好研究人笨了点,查了一上午的资料,还是没搞定···我刚开始工作,很多东西要学牛哥们能否给小弟些建议。迫切需要,金融危... VC ListCtrl 列表 单击排序怎么实现
最好事有实例,好研究
人笨了点,查了一上午的资料,还是没搞定···

我刚开始工作,很多东西要学
牛哥们能否给小弟些建议。
迫切需要,金融危机,我小命难保呀~~
就是单击列表头,排序。
展开
 我来答
飞舞流萤
推荐于2016-08-30 · 超过31用户采纳过TA的回答
知道答主
回答量:81
采纳率:100%
帮助的人:49.6万
展开全部
单击列表头的时候会产生LVN_COLUMNCLICK通知消息
ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST1, OnColumnclickList1)
你在OnColumnclickList1这个函数里面取得当前单击的是哪个表头
然后在看看是不是需要排序的那一行 调用排序函数就可以了
CListctrl本身也有排序函数的SortItems()
http://www.jcwcn.com/html/VC/10_19_51_127.htm 稍微搜下都有例子的啊
snowwolf2408
2008-12-17
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
添加OnColumnclickList消息响应函数,isSotred获得的是你单击的那一列,然后再调用回调函数CompareFunc进行处理。
void CP2PAssignmetDlg::OnColumnclickList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here

static int iSorted=-1;//排列序号

if (pNMListView->iSubItem==iSorted) return;

iSorted=pNMListView->iSubItem;

m_list.SortItems((PFNLVCOMPARE)CompareFunc,iSorted);
*pResult = 0;
}

strAllData为你的数据组织结构,可以为Struct
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2,LPARAM lParamSort)

{
CString text1,text2;
DEMO_DATA * pInfo1 = strAllData+lParam1;
DEMO_DATA * pInfo2 = strAllData+lParam2;

switch (lParamSort){

case 0L:
text1=pInfo1->num;
text2=pInfo2->num;
break;

case 1L:
text1=pInfo1->name;
text2=pInfo2->name;
break;

case 2L:
text1=pInfo1->isSub;
text2=pInfo2->isSub;
break;

case 3L:
text1=pInfo1->subTime;
text2=pInfo2->subTime;
break;
default:
break;

}
int i = strcmp(text1,text2);//结果为>0 =0 <0

return i;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yc_19861104
2008-12-11 · 超过20用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:0
展开全部
能否说的清楚点 没看懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式