已经做好了单击表头排序的函数,希望在生成列表时即排序一次,所以想模拟表头单击,求助。

解决方案 »

  1.   

    排序不需要单击列表头吧直接调用listctrl的SortItems 函数
      

  2.   

    1、如果直接调用排序函数:排序函数原型是int CALLBACK CompareFunc(LPARAM lParam1,LPARAM lParam2,LPARAM lParamSort);
    而调用排序是m_ListLeft.SortItems(CompareFunc,(LPARAM)tmpp);
    参数个数和类型怎么匹配啊,这个是关键啊;
    2、没找到CLISTCTRL有设置单击的成员函数,而SENDMESSAGE的参数也不会匹配。
      

  3.   

    CompareFunc(LPARAM lParam1,LPARAM lParam2,LPARAM lParamSort);
    lParam1:是要比较的前一个项
    lParam2:后一个项
    lParamSort:SortItems时传人的楼主你没有MSDN吗?
      

  4.   

    现在要用SortItems来给CompareFunc传参数,怎么把“(CompareFunc,(LPARAM)tmpp) ”转为“lParam1:是要比较的前一个项
    lParam2:后一个项
    lParamSort:SortItems时传人的”,我没在MSDN上查到,还望指教
      

  5.   

    lParam1
    lParam2
    是系统自己传进去的你自己只能控制tmpp,也就是lParamSort
      

  6.   

    lParam1:是要比较的前一个项的ITEMDATA
    lParam2:后一个项的ITEMDATA
    int CALLBACK MyListCompareProc(LPARAM lParam1, LPARAM lParam2,LPARAM lParamSort)
    {
    PSEARCHWEB pWeb1=(PSEARCHWEB)lParam1;//PSEARCHWEB是我自己随便写的,在setitemdata的时候设置的,你可以设置你自己的
    PSEARCHWEB pWeb2=(PSEARCHWEB)lParam2;
    int* pCol=(int*)lParamSort;
    return stricmp(pWeb1->szName,pWeb2->szName);
    return 0;
    }
      

  7.   

    The  lParam1  and  lParam2  parameters specify the item data for the two items being compared. The  lParamSort  parameter is the same as the  dwData  value.
    MSDN上不是有说吗?
      

  8.   

    问题我现在就想控制这两个参数啊,不然我在其他地方(非响应表头单击函数内)直接调用SORTITEMS,“lParam1:是要比较的前一个项的ITEMDATA
    lParam2:后一个项的ITEMDATA“出来后排列有问题,部分成功。
      

  9.   

    貌似实际上问题不在这
    其实已经成功了
    SortItems调用时,lParam1、lParam2应该已经在之前InsertItem时通过SetItemData设置好了,不需要理会这两个参数,直接调用SortItems就能成功排序了
    问题已经在2楼解决了,后面的问题不存在