SortChildren 按字母排序, SortChildrenCB 按自己写的排序函数排序 MSDN上的例子 // Sort the item in reverse alphabetical order. static int CALLBACK MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { // lParamSort contains a pointer to the tree control. // The lParam of an item is just its handle, // as specified with <A HREF="_mfc_ctreectrl.3a3a.setitemdata.htm">SetItemData </A> CTreeCtrl* pmyTreeCtrl = (CTreeCtrl*) lParamSort; CString strItem1 = pmyTreeCtrl->GetItemText((HTREEITEM) lParam1); CString strItem2 = pmyTreeCtrl->GetItemText((HTREEITEM) lParam2); return strcmp(strItem2, strItem1); } // The pointer to my tree control. extern CTreeCtrl* pmyTreeCtrl; TVSORTCB tvs; // Sort the tree control's items using my // callback procedure. tvs.hParent = TVI_ROOT; tvs.lpfnCompare = MyCompareProc; tvs.lParam = (LPARAM) pmyTreeCtrl; pmyTreeCtrl->SortChildrenCB(&tvs);
SortChildrenCB 按自己写的排序函数排序 MSDN上的例子
// Sort the item in reverse alphabetical order.
static int CALLBACK
MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
// lParamSort contains a pointer to the tree control.
// The lParam of an item is just its handle,
// as specified with <A HREF="_mfc_ctreectrl.3a3a.setitemdata.htm">SetItemData </A>
CTreeCtrl* pmyTreeCtrl = (CTreeCtrl*) lParamSort;
CString strItem1 = pmyTreeCtrl->GetItemText((HTREEITEM) lParam1);
CString strItem2 = pmyTreeCtrl->GetItemText((HTREEITEM) lParam2); return strcmp(strItem2, strItem1);
} // The pointer to my tree control.
extern CTreeCtrl* pmyTreeCtrl;
TVSORTCB tvs; // Sort the tree control's items using my
// callback procedure.
tvs.hParent = TVI_ROOT;
tvs.lpfnCompare = MyCompareProc;
tvs.lParam = (LPARAM) pmyTreeCtrl; pmyTreeCtrl->SortChildrenCB(&tvs);
排序函数指的是 写出对strItem1、strItem2 的判断吗
CString strItem1 = pmyTreeCtrl->GetItemText((HTREEITEM) lParam1);
CString strItem2 = pmyTreeCtrl->GetItemText((HTREEITEM) lParam2); 如果strItem1与strItem2 相比位置在前 就返回负值,否则strItem1的位置应该靠后,就返回正值 是这样吗?