点击每列响应消息以使这一列的数据重排,我也把点击得到的是哪一列的信息传给回调函数了,可是为什么不论点击哪一列都使所有列的数据重排呢?

解决方案 »

  1.   

    int CALLBACK ByPersonListCompareInfo(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort){

    CSortList *pparam;
    CString m_str1,m_str2;
        __int64 i1,i2;
    int ret = 1; 
    pparam = (CSortList *)lParamSort;  
    m_str1 = pparam->pl->GetItemText(lParam1,pparam->m_nSortedCol);  
    m_str2 = pparam->pl->GetItemText(lParam2,pparam->m_nSortedCol);
    switch(pparam->m_nSortedCol)
    {
    case(0):
    //以第一列为根据排序
    ret = m_str1.Compare(m_str2);
    break;
    default:
    m_str1.Replace(_T("-"),_T(""));//用于时间格式的比较
    m_str1.Replace(_T(" "),_T(""));
    m_str1.Replace(_T(":"),_T(""));
    m_str2.Replace(_T("-"),_T(""));
    m_str2.Replace(_T(" "),_T(""));
    m_str2.Replace(_T(":"),_T(""));
    i1 = _ttoi64((LPCTSTR)m_str1);
    i2 = _ttoi64((LPCTSTR)m_str2);
    ret = i1 <= i2 ? -1 : 1;
    break;
    }
    if(pparam->m_fAsc)
    return ret;
    else
    return -ret; 
    }
    这是我的回调函数 Case(0) 代表以第一列排
    还有楼主你注意数据在listctrl是一行一行的哦