TVSORTCB 的用法参照MSDN,本文只是简单的举了一个小例子
用户调用的排序函数
void CMyManage ::SortBuddy(HTREEITEM hItem)
{
HTREEITEM hParent = m_MyTree.GetParentItem(hItem);
if(hParent)
{
TVSORTCB tvs;
tvs.hParent = hParent;
tvs.lpfnCompare = StatusSortProc_Fun; //排序函数
tvs.lParam = (LPARAM)this;
m_MyTree.SortChildrenCB(&tvs);
}
}
函数的返回值有0,1,-1三种。 0 代表不动,1 代表下移, -1 代表上移
int CALLBACK CMyManage ::StatusSortProc_fun(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
CMyManage * pManage= ( CMyManage*)lParamSort;
if (pMsn == NULL) return 0;
int status1,status2;
CString str1 = (LPCTSTR)lParam1;///这里面参数取得是你在往树上插入数据的时候,SetItemData 设置的数据
CString str2 = (LPCTSTR)lParam2;
这时候你就可以根据你设置的数据找到你要排序依据的数据,进行比较,最后做最终的排序
/我处理的时候是根据str1找到它的状态 status1 和 str2对应的状态status2进行比较排序的
/。。。。。
}