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 CTreeCtrlDü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