请大家帮我看一下,这个LISTCTRL的排序的回调函数没写明白!

xqk 2003-09-26 02:35:09
struct LIST_DATA
{
CString szName;
CString szType;
CString szSize;
CString szPath;
}listdata[500];

int CALLBACK ListCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
CSortList* pV=(CSortList*)lParamSort;
LIST_DATA* pInfo1=listdata+lParam1;
LIST_DATA* pInfo2=listdata+lParam2;
CString szComp1,szComp2;
int iCompRes;
switch(pV->m_nSortedCol)
{
case(0):
szComp1=pInfo1->szName;
szComp2=pInfo2->szName;
iCompRes=szComp1.Compare(szComp2);
break;
case(1):
if(pInfo1->szType == pInfo2->szType)
iCompRes = 0;
else
iCompRes=(pInfo1->szType < pInfo2->szType)?-1:1;
break;
default:
ASSERT(0);
break;
}
//根据当前的排序方式进行调整
if(pV->m_fAsc)
return iCompRes;
else
return iCompRes*-1;
}
...全文
54 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqk 2003-09-26
  • 打赏
  • 举报
回复
我是这样做的啊,可是为什么我的LPARAM lParam1, LPARAM lParam2 始终为0 ?

正常应该是1,2 ; 3,4 呀!
wuxfBrave 2003-09-26
  • 打赏
  • 举报
回复
你可以调用listCtrl.SortItems(ListCompare, &listCtrl);
这样ListCtrl就会根据回调函数的排序规则排序

int CALLBACK ListCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)

lParamSort就是&listCtrl,即SortItems的第二个参数

lParam1,lParam2就是要比较的listCtrl的两项的index

listdata中存储了500个比较的对象,其中listctrl的每一项对应了listdata中的值

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧