1、消息处理:LVN_COLUMNCLICK消息,可以控件自己处理,也可以外面的DLG处理。
CListCtrl自己处理:ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnLvnColumnClick),OnLvnColumnClick函数就是获取点击的第几列,然后调用SortItems函数。
2、实现一个CALLBACK 排序回调函数,这个函数不是你调用的,是MFC调用的,具体是MFC在对CListCtr的两项进行l排序时,通过调用这个函数决定谁应该在谁的前面,可以去MSDN查这个回调函数的原型和说明
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort),lParam1和lParam2是通过CListCtrl的成员函数SetItemDate在插入行时进行设置的,如果你没有设置,也就不从排序了,lParamSort是在调用SortItems函数时候,传入的第二参数,SortItems函数两个参数,第一个参数是排序回调函数指针。
3、排序回调函数三个返回值,和strcmp的一样,现在你可以知道怎么排序你完全可以控制了,因为实际是由你自己决定谁应该在谁的前面,分组排序也不难。只要在回调函数里面保持相应的顺序就行了。
4、常见的header上的小三角,可以自绘可以贴图片。
参考文献:
http://www.vckbase.com/document/viewdoc/?id=243
http://www.mx68.com/WebDeveloper/2006-03-10/WebDeveloper_29392.shtml