列表框有自己的方法用了排序的吧,sort()

解决方案 »

  1.   

    调用如:m_list.SortItems(MyCompareProc,Data);回调函数可以这样写
    struct CompareFunc_lParamSort
    {
           CListCtrl  * pl;        //指向Listctrl控件的指針
            int      idCol;    //指向Listctrl的列
            BOOL     isInc;      //排序方式(升序TRUE,降序FALSE)
            BOOL     isStr;      //是否按字符排序
    }; int CALLBACK MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParam3)
    {
    CompareFunc_lParamSort * pparam;
    CString cstr,cstr2;
    int ret; 
    pparam=(CompareFunc_lParamSort *)lParam3;  
    cstr=pparam->pl->GetItemText(lParam1,pparam->idCol);  
    cstr2=pparam->pl->GetItemText(lParam2,pparam->idCol); 
    if(pparam->isStr) 
    ret=strcmp(cstr,cstr2);
    else
    ret=atof(cstr)<=atof(cstr2)?-1:1;
    if(pparam->isInc)
    return ret;
    else
    return -ret; 
    }