解决方案 »

  1.   

    参考:////
    void CMyListView::ExpandLeftTree(char * dir)
    {
    // get LeftTree
    CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd();// m_pMainWnd;
    CLeftView * pLeft=pMain->GetLeftPane();
    CTreeCtrl&  LeftTree=pLeft->GetTreeCtrl();
    // get selected tree item
    HTREEITEM hParentItem,hChildItem;
    TVITEM tvi;
    char tviname[MAX_PATH];
    hParentItem=LeftTree.GetSelectedItem();
    // if parent not expanded
    if(TVIS_EXPANDED!=LeftTree.GetItemState(hParentItem,TVIF_STATE))
    { // expand
    LeftTree.Expand(hParentItem,TVE_EXPAND);

    // find which one 
    hChildItem=LeftTree.GetChildItem(hParentItem);
    tvi.mask=TVIF_TEXT|TVIF_HANDLE;  
        while (hChildItem)
    {
    tvi.hItem=hChildItem;
    strcpy(tviname,LeftTree.GetItemText(tvi.hItem));
    //AfxMessageBox(tviname);
    if (stricmp(tviname,dir)==0)// found
    { // expand
    LeftTree.Expand(tvi.hItem,TVE_EXPAND);
    // change selection
    LeftTree.SelectItem(tvi.hItem);
    // ensure visible
    LeftTree.EnsureVisible(tvi.hItem);
    }
    // get new child
    hChildItem=LeftTree.GetNextSiblingItem(tvi.hItem);

    }