Hallo.
Ich habe folgendes Problem. In meinem Programm kann man bis jetzt eine Dateiendung und ein Laufwerk wählen. Nun will ich im gewählten Laufwerk die Ordner anzeigen lassen. Wählt man einen angezeigten Ordner sollen die Unterordner oder alle Datei mit der gewünschten dateiendung angezeigt werden.
Die Verzeichnisstruktur soll in einem Element des Types CTreeCtrl angezeigt werden. Das einlesen des Laufwerkes mache ich mit der Finktion CFileFind::FileFind.
Hat irgend jemand damit schon Erfahrungen gesammeltund kann mit Tipps oder Ratschläge geben?
Bin für jeden Hinweis bbzw. Tip dankebar, ich weiß langsam nicht mehr weiter.
Cu Oli
Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge
ok, hier ein komplettes beispiel:
void CtestDlg::Findverzeichnis()
{
CTreeCtrl* tree = (CTreeCtrl*)GetDlgItem( IDC_TREE1);
HTREEITEM pItem = tree->GetRootItem();
FindRecursivVerzeichnis("c:",pItem);
}
void CtestDlg::FindRecursivVerzeichnis( CString path, HTREEITEM pNode)
{
CFileFind finder;
bool bWorking = finder.FindFile( path + "\\*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDots())
{
//tue nichts
}
else
{
if ( finder.IsDirectory())
{
TVINSERTSTRUCT tvInsert;
tvInsert.hParent = pNode;
tvInsert.hInsertAfter = pNode;
tvInsert.item.mask = TVIF_TEXT;
char sz[_MAX_PATH];
strcpy( sz, finder.GetFileName());
tvInsert.item.pszText = sz;
CTreeCtrl* tree = (CTreeCtrl*)GetDlgItem( IDC_TREE1);
HTREEITEM item = tree->InsertItem( &tvInsert);
FindRecursivVerzeichnis( finder.GetFilePath(), item);
}
else
{
TVINSERTSTRUCT tvInsert;
tvInsert.hParent = pNode;
tvInsert.hInsertAfter = pNode;
tvInsert.item.mask = TVIF_TEXT;
char sz[_MAX_PATH];
strcpy( sz, finder.GetFileName());
tvInsert.item.pszText = sz;
CTreeCtrl* tree = (CTreeCtrl*)GetDlgItem( IDC_TREE1);
tree->InsertItem( &tvInsert);
}
}
}
WM_HOPETHISHELPS