如果只是普通的CListCtrl,那么排序时可参考:
http://support.microsoft.com/kb/250614/en-us
大体上:
加入点击列的相应函数:
void CEditListCtrl::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult);
里面加入排序系统函数
SortItems( CompareFunc, pNMListView->iSubItem );
这个函数会调用到自己编写的排序规则函数:
static int CALLBACK CEditListCtrl::CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
而参数类型LPARAM为写入行时用到的SetItemData函数中的第二个参数类型。
写入行可以在OnInitDialog中进行。
这种方法在CListCtrl中的项可以编辑时需要修改,很显然只要把写入行的操作放到一个可以自己控制的函数中,使得这个函数在SortItem前被调用。譬如可以直接放在OnColumnclick里面。