这样是否可以正确为树的叶子节点排序?

// 比较函数
int CALLBACK TreeCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
    CTreeCtrl* pmyTreeCtrl = (CTreeCtrl*)lParamSort;
    CString strItem1 = pmyTreeCtrl->GetItemText((HTREEITEM)lParam1);
    CString strItem2 = pmyTreeCtrl->GetItemText((HTREEITEM)lParam2);
    return strItem2.Compare(strItem1);
}

// 为节点下所有叶子节点排序
void SortTreeLeaf(CTreeCtrl *pTree,HTREEITEM hParentItem)
{
    TVSORTCB tvs;
    tvs.hParent = hParentItem;
    tvs.lpfnCompare = TreeCompare;
    tvs.lParam = (LPARAM)pTree;
    pTree->SortChildrenCB(&tvs);
}

// 遍历
void TraveAndSortLeafNode(CTreeCtrl *pTree,HTREEITEM hItem)
{
    HTREEITEM hChild = pTree->GetChildItem(hItem);
    HTREEITEM hNext = nullptr;
    while(hChild)
    {
        hNext = hChild;
        if (pTree->ItemHasChildren(hNext))
        {
            TraveAndSortLeafNode(pTree,hNext);
            hChild = pTree->GetNextSiblingItem(hChild);
        }
        else{
            SortTreeLeaf(pTree,hItem);
            break;
        }
    }
}

//调用进行排序
TraveAndSortLeafNode(pResultTree,TVI_ROOT);

经测试,不能正确为树的末端叶子节点排序,问题出在比较函数中不能正确获取文本? why!!

https://blog.csdn.net/weixin_45794727/article/details/105817577