Dateisystem wie im Explorer darstellen
-
Hi@All,
hat jemand ne Ahnung, wie ich das Dateisystem einer Festplatte (bzw. eines Computers) in einem TreeView oder so darstellen kann, also dass es so aussieht, wie im Windows-Explorer???
-
Genau
CTreeView und CTreeCtrl heissen die beiden Teile mit welchen das klappt.
Diealogbasierend reicht ein CTreeCtrl.
Macht aber wenig Sinn hier her die MSDN zu kopieren, oder?
-
Schon klar, dass ich sie mit diesem Kontrollelement darstellen kann. Vieleicht hab ich meine Frage falschgestellt. Ich wollte wissen, wie ich überhaupt an das Dateisystem rankomme um es darzustellen. Ich kann ja schlecht jedesmal die komplette Festplatte nach allen Dateien durchsuchen.
-
Ich bin darin kein Experte aber mir fällt auf die schnelle keine andere Möglichkeit ein als einmal alles zu lesen.
Wie du das dann bei Änderungen handhabst ist Geschmackssache....
Was ich aber viel eher glaube ich habe deine Frage nicht verstanden.
-
Ich möchte einfach alle Verzeichnisse und dateien wie im WinExplorer in einem TreeView darstellen, und das ich auch genaus wie im Explorer mit ihnen arbeiten kan, sprich kopieren löschen und so. Und da jedesmal alle Verzeichnisse und Dateien zu suchen un wieder neu im TreeView anzuzeigen wäre ein zu hoher aufwand.
-
Schau mal zu codeproject/codeguru, da es zuviel ist, den Code hier zu posten!
-
DA hab ich schon geschaut, aber nix gefunden, kannst du mir vieleich nen Link schicken?? Wäre echt cool.
-
Nun,
lege ein CImageList an, befülle die ImageList; lege eine CTreeCtrl an; bestimme eine Membervar dafür;lies Festplatte aus; für jedes gefundene Element machst du ein InsertItem HTREEITEM item = m_tree.InsertItem("Text",n1,n2,parentitem);n1 steht für das Bild aus der ImageList welches angezeigt werden soll wenn tree nicht aufgeklappt und n2 das Bild ais der Imagelist wenn der Tree ausgeklappt ist. parentitem gibt die Position an wo die das teil eingefügt haben möchtest. Bei jedem insertItem bekommst du nämlich einen HANDLE zurück dieser Handle markiert eine Position;
also:
HTREEITEM item1 = m_tree.InsertItem("Text1",n1,n2,);
HTREEITEM item2 = m_tree.InsertItem("Text2",n1,n2,parentitem);
HTREEITEM item3 = m_tree.InsertItem("Text3",n1,n2,parentitem);
HTREEITEM item4 = m_tree.InsertItem("Untertext",n1,n2,item2);damit hast du einen Unterpunkt unter Text2. Unter allen anderen nicht.
Ich hoffe es hilft.
-
ich meinte....
HTREEITEM item1 = m_tree.InsertItem("Text1",n1,n2);
HTREEITEM item2 = m_tree.InsertItem("Text2",n1,n2);
HTREEITEM item3 = m_tree.InsertItem("Text3",n1,n2);
HTREEITEM item4 = m_tree.InsertItem("Untertext",n1,n2,item2);
-
@<erbse>
Also, ich glaub als, du bist ein bischen schwer von Begriff*g*. Ich weiß, wie ich mit den Steuerelementen umgehe. Das Problem ist die Verzeichnisse und Datein zu bekommen.
-
tja mag sein... ich konnte mir halt nicht vorstellen das du nicht weisst wie man Files findet *hehe*
void CSearchMess::Search(CString path) { CFileFind ff; int ret =0; CString file; CString temp; ret = ff.FindFile(path); while(ret) { ret = ff.FindNextFile(); file= ff.GetFileName(); //das ist ein Dir if ( ff.IsDirectory() && !ff.IsDots()) { temp.Format("%s\\*%s",ff.GetFilePath(),path.Right(path.GetLength()-path.Find("."))); Search(temp); } // Das ist ein File if (!ff.IsDirectory()) { ScanFile(ff.GetFilePath(),typ); } } }
Aber eigentlich hast du recht, ich bin schwer von Begriff
-
Hey, du kapierst echt garnichts, oder überliest die Hälfte von dem was ich schreibe. Wie ich nach Dateien such weiß ich auch. Ich such ja gerade ne ander Weise wie ich an das Dateisystem rankomm, ohne expliziet rekusrsiv zu suchen. Jetzt verstanden????!!!!!
-
Ja, jetzt hab ichs verstanden.
Ich werde mich in Zukunft hüten noch mal was zu posten
-
War ja nicht böse gemeint, sorry wenn es so rüber kam. Ich find es ja gut, dass man sich gegenseitig hilft. Also ruhig weiter posten.
-
Mit Windows Shell! Genauer Ishellfolder
Mit SHGetDesktopFolder( Ishellfolder **folder) bekommst du einen Zeiger auf eine isf Instance.
Dies ist zwar der einzige richtig gute Weg um eine Explorer, wie im BS auch vorhanden, nachzuprogrammieren, aber auch der schwierigste.Deswegen am besten wie ReneG schon erwähnt unter CodeProject.Com nachschauen, da giebt es ein komplett fertiges Programm, mit source code, zum downloaden.
www.codeproject.com/shell/seashell.asp
[ Dieser Beitrag wurde am 11.12.2002 um 16:25 Uhr von Scania V8 editiert. ]
-
@vagabond
2 Klicks auf codeproject, und ich habe ein Beispiel gefunden ... muss man denn hier noch das Surfen und Finden von Informationen auf Internetseiten erläutern?http://www.codeproject.com/treectrl/pathpicker.asp
Nunja, vielleicht sieht das Beispiel nicht 100%ig aus wie im Explorer, aber einen Grossteil kann man doch rausziehen!