Pfad im CTreeCtrl expandiert anzeigen



  • Mal eine persönlich Frage, Wie lange brauch man um so gut zu sein wie Du?

    Habe die Funktion jetzt mal geteste. Es passiert leider nichts.

    Cu
    Oli



  • Der Code der inder for-Schleife steht, wird nicht einmal ausgeführt

    for(HTREEITEM htiChild = tree.GetChildItem( TVI_ROOT ); htiChild; htiChild = tree.GetNextSiblingItem( htiChild))  
     if( tree.GetItemText( htiChild) == pszStart)
     {
        tree.Expand( htiChild, TVE_EXPAND);
        bFound = true;
        break;
     }
    

    Ist dort irgend ein Fehler?

    Cu
    Oli



  • Mal eine persönlich Frage, Wie lange brauch man um so gut zu sein wie Du?

    Weiss net, hab nebenbei noch was anderes zutun 😉

    Der Code der inder for-Schleife steht, wird nicht einmal ausgeführt

    Naja, anpassen an die Struktur Deines TreeCtrls musst Du es schon noch! Möglicherweise mal bissel debuggen!



  • Könnest Du mir trotsdem die Bedingung der While - Schleife kurz erklären?

    while( pszPos == _tcschr( pszStart, _T('\\')))
    

    In meinem Pfad steht z.B. "C:\\Temp"

    Beim debuggen ist mir aufgefallen, das die while-Schleife nie durchlaufen wird.

    Cu
    Oli

    [ Dieser Beitrag wurde am 10.01.2003 um 12:22 Uhr von Oli_1977 editiert. ]



  • Könnest Du mir trotsdem die Bedingung der While - Schleife kurz erklären?

    while( pszPos == _tcschr( pszStart, _T('\')))

    Soviel ich mich erinnere, habe ich

    while( pszPos = _tcschr( pszStart, _T('\')))

    geschrieben !!!

    Siehst Du den Unterschied?



  • Da hst Du wieder erstmal recht.

    Jetzt bleibt er bloß noch an der if-Schleife hängen. Die wird nie erfüllt.

    Weil in Start \\Temp drin steht und mein Pfad aber C:\\Temp heißt.

    Cu
    Oli



  • Als 1. steht in pszStart "C:" drin, danach steht Temp drin, weiss net, was Du noch falsch abgeschrieben hast.



  • Morgen.

    Also, meine Funktion sieht so aus:

    bool CDateiWaehlen::ExpandPath(CTreeCtrl& tree, CString pszPath)
    {
        LPCTSTR pszStart = pszPath;
        LPTSTR pszPos;
        while( pszPos = _tcschr( pszStart, _T('\\'))) 
        {
            *pszPos = _T('\0');
            bool bFound = false;
    
            for(HTREEITEM htiChild = tree.GetChildItem( TVI_ROOT ); htiChild; htiChild = tree.GetNextSiblingItem( htiChild))  
                if( tree.GetItemText( htiChild) == pszStart)
                {
                    tree.Expand( htiChild, TVE_EXPAND);
                    bFound = true;
                    break;
                }
            if( !bFound)
            break;
            pszStart = pszPos + 1;
        }
    
        return pszPos == NULL;
    
    }
    

    Bei der Übergabe ist pszPath = "C:\\Temp" und
    tree = m_Baumstruktur //Variable meine CTreeCtrl

    Dürft eigentlich nichts weiter falsch sein.

    Cu
    Oli



  • Der Übergabeparameter pszStart sollte C:\\Temp\\ sein, so weiss die Funktion, dass Temp ein Verzeichnis ist !



  • Ich habe den Pfad jetzt so geändert, wie Du es vorgeschlagen hast.
    Zudem habe ich in die For-Schleife noch eine MessageBox mit eingefügt um mir immer den Item-Text anzeigen zu lassen.

    for(HTREEITEM htiChild = tree.GetChildItem( TVI_ROOT ); htiChild; htiChild = tree.GetNextSiblingItem( htiChild))  
            {   MessageBox(tree.GetItemText(htiChild));
                if( tree.GetItemText( htiChild) == pszStart)
                {
                    tree.Expand( htiChild, TVE_EXPAND);
                    bFound = true;
                    break;
                }
            }
    

    Die MessageBox kommt nur einaml mit C:\

    Also es funktioniert nicht.

    Cu
    Oli


Anmelden zum Antworten