VC ListCtrl 列表 单击排序怎么实现
VCListCtrl列表单击排序怎么实现最好事有实例,好研究人笨了点,查了一上午的资料,还是没搞定···我刚开始工作,很多东西要学牛哥们能否给小弟些建议。迫切需要,金融危...
VC ListCtrl 列表 单击排序怎么实现
最好事有实例,好研究
人笨了点,查了一上午的资料,还是没搞定···
我刚开始工作,很多东西要学
牛哥们能否给小弟些建议。
迫切需要,金融危机,我小命难保呀~~
就是单击列表头,排序。 展开
最好事有实例,好研究
人笨了点,查了一上午的资料,还是没搞定···
我刚开始工作,很多东西要学
牛哥们能否给小弟些建议。
迫切需要,金融危机,我小命难保呀~~
就是单击列表头,排序。 展开
展开全部
单击列表头的时候会产生LVN_COLUMNCLICK通知消息
ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST1, OnColumnclickList1)
你在OnColumnclickList1这个函数里面取得当前单击的是哪个表头
然后在看看是不是需要排序的那一行 调用排序函数就可以了
CListctrl本身也有排序函数的SortItems()
http://www.jcwcn.com/html/VC/10_19_51_127.htm 稍微搜下都有例子的啊
ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST1, OnColumnclickList1)
你在OnColumnclickList1这个函数里面取得当前单击的是哪个表头
然后在看看是不是需要排序的那一行 调用排序函数就可以了
CListctrl本身也有排序函数的SortItems()
http://www.jcwcn.com/html/VC/10_19_51_127.htm 稍微搜下都有例子的啊
展开全部
添加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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能否说的清楚点 没看懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询