ERLEDIGT
JA
JA
ANTWORTEN
10
10
ZUGRIFFE
738
738
EMPFEHLEN
-
Hallo Hallo
Ich habe eien TreeCTrl, der mit die Ordner von der Festplatte zurück gibt, und der Inhalt der Ordner soll in der Listbox wiedergegeben werden.
kann mir jmd sagen, wo mein fehler liegt?!
er öffnet die liste der dateien in der Listbox entweder sporatisch oder zu 90% zeigt er sie gar nicht erst anPHP-Code:BEGIN_MESSAGE_MAP(CDlgBarExplorer, CDialog)
//{{AFX_MSG_MAP(CDlgBarExplorer)
ON_NOTIFY(TVN_SELCHANGED, IDC_EXPLORER_TREE, OnSelchangedExplorerTree)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Behandlungsroutinen für Nachrichten CDlgBarExplorer
BOOL CDlgBarExplorer::OnInitDialog()
{
CDialog::OnInitDialog();
TCHAR szWorkDir[MAX_PATH];
_getcwd(szWorkDir, 256);
if(!m_ctrlTree.m_hWnd)
{
if (m_ctrlTree.SubclassDlgItem(IDC_EXPLORER_TREE, this))
{
m_ctrlTree.DisplayTree(NULL, FALSE);
m_ctrlTree.SetSelPath(szWorkDir);
}
}
InitListDir(szWorkDir);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
}
void CDlgBarExplorer::InitListDir(CString strPathName)
{
LV_COLUMN column;
column.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
column.fmt = LVCFMT_LEFT;
column.cx = 100;
column.pszText = "Name";
column.iSubItem = 0;
m_ctrlList.InsertColumn(0, &column);
column.cx = 50;
column.pszText = "Datum";
column.iSubItem = 1;
m_ctrlList.InsertColumn(1, &column);
}
void CDlgBarExplorer::ChangeListDir(CString strPathName)
{
int iItem, iActualItem;
char buf[256];
LV_ITEM item;
HANDLE handle;
WIN32_FIND_DATA fd;
iItem = 0;
item.iImage = 0;
CString strSearchSpec = strPathName + "*.*";
handle = ::FindFirstFile((LPCTSTR)strSearchSpec, &fd);
do
{
if(fd.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE)
{
CString strFilename = (LPSTR)&fd.cFileName;
if((strFilename != ".") && (strFilename !=".."))
{
item.mask = LVIF_TEXT | LVIF_IMAGE;
item.iSubItem = 0;
item.iItem = iItem++;
item.pszText = (LPSTR)&fd.cFileName;
iActualItem = m_ctrlList.InsertItem(&item);
CTime cTime(*(&fd.ftCreationTime));
CString strTime = cTime.Format("%d.%m.%y");
sprintf(buf,"%s",strTime);
item.pszText = buf;
item.mask = LVIF_TEXT;
item.iItem = iActualItem;
item.iSubItem = 1;
m_ctrlList.SetItem(&item);
}
}
}
while(::FindNextFile(handle,&fd));
::FindClose(handle);
}
void CDlgBarExplorer::OnSelchangedExplorerTree(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
ChangeListDir(m_ctrlTree.GetFullPath(pNMTreeView->itemNew.hItem));
UpdateData( FALSE );
*pResult = 0;
}
-
Habs nicht weiter nachverfolgt, aber
CString strFilename = (LPSTR)&fd.cFileName;
sollte eher
CString strFilename = (LPSTR)fd.cFileName;
(ohne &) sein.
-
ja gut und wie weiter?! wo liegt mein fehler?!
-
Ausserdem haben nicht alle Files das Archive-Attribut gesetzt. Prüfe einfach, ob NICHT das Directory-Attribut gesetzt ist und du hast alle Dateien.
-
klasse, aber jetzt zeigt er mir das ganze wie eine history an, wenn ich auf nen ordner klicke, zeigt er mir dann in der listbox den ordner name an, aber nicht die dateien die drin sind, und so geht das weiter. bloss wird dann die liste mit den neuen ordner namen ergänzt, ohne den vorherigen inhalt zu löschen....
ich dreh durch, ich find meine fehler nicht und in meinen büchern find ich auch nichts
-
25.01.05 21:13 #6
- Registriert seit
- Jul 2003
- Ort
- Duisburg (NRW)
- Beiträge
- 1.788
Du musst mal an deiner Suchtechnik arbeiten und eventuell auch mal in der MSDN nachsehen; da ist schliesslich alles erklärt.
Zitat von Thopeto
http://msdn.microsoft.com/library/de...s_CListbox.asp
Wenn du es in Deutsch haben willst, musst du auf deiner Festplatte nachsehen. Jedenfalls hat CListbox unter anderem auch Methoden, um alle Listeneinträge zu löschen. ResetContent! Presto! Dawai!Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."
-
HI!
Ich hätt da ein paar Fragen. Ich möchte genau das Gleiche machen wie du.
Aber wie hast du dem Tree Control gesagt er soll zu Anfang die Drives / Ordner anzeigen?
Weiter: Hast du es nun geschafft, dass die Listbox nur die Files anzeigt im Ordner?
gruss anaFlash an die Macht!
-
ja habs geschafft und zwar so:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
void CDlgBarExplorer::ChangeListDir(CString strPathName) { int iItem, iActualItem; char buf[256]; LV_ITEM item; HANDLE handle; WIN32_FIND_DATA fd; iItem = 0; item.iImage = 0; m_ctrlList.DeleteAllItems(); CString strSearchSpec = strPathName + "//*.*"; handle = FindFirstFile(strSearchSpec, &fd); if (handle == INVALID_HANDLE_VALUE) return; do { if(!(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)) { item.mask = LVIF_TEXT | LVIF_IMAGE; item.iSubItem = 0; item.iItem = iItem++; item.pszText = (LPSTR)&fd.cFileName; iActualItem = m_ctrlList.InsertItem(&item); CTime cTime(*(&fd.ftCreationTime)); CString strTime = cTime.Format("%d.%m.%y"); sprintf(buf,"%s",strTime); item.pszText = buf; item.mask = LVIF_TEXT; item.iItem = iActualItem; item.iSubItem = 1; m_ctrlList.SetItem(&item); SetRedraw(); InvalidateRect(NULL); } } while(::FindNextFile(handle,&fd)); ::FindClose(handle); SetRedraw(); InvalidateRect(NULL); }
das wegen dem Tree, ich glaub das würd hier nicht reinpassen, da meine Tree Klasse zu stark an mein Programm gebunden ist
-
Danke.
Hat denn keiner eine Ahnung wie ich die Drives im Tree anzeige?
Ich weiss das man mit:ein Item dem Tree hinzufügen kann,aber ich weiss ja nicht was alles im C rumliegt da kann ich doch das nicht manuell schreibenCode :1
m_MFC_Tree.InsertItem("ItemText",TVI_ROOT);
Gibt es keine Funktion wie tree.showItems("My Computer") oder sowas ähnliches?
Ich meine der Explorer müsste doch auch so eine haben?!Flash an die Macht!
-
10.02.05 10:49 #10
- Registriert seit
- Jul 2003
- Ort
- Duisburg (NRW)
- Beiträge
- 1.788
Vielleicht liest du dir den Thread einfach mal genauer durch.
Zitat von astaluego
Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."
-
Ähnliche Themen
-
strstr() gibt nicht den gewünschten/erwarteten Wert zurück
Von srusso im Forum PHPAntworten: 2Letzter Beitrag: 01.02.09, 14:22 -
Punktewichtung funktioniert nicht korrekt [Punkte bleiben zurück]
Von XtremeCJ im Forum Cinema 4DAntworten: 7Letzter Beitrag: 19.03.08, 05:56 -
LDAP suche gibt nicht alle Werte zurück
Von C3000 im Forum JavaAntworten: 1Letzter Beitrag: 22.02.08, 13:31 -
IE korrekt, FF fast korrekt, Opera nicht korrekt
Von riddla im Forum CSSAntworten: 1Letzter Beitrag: 08.03.06, 16:41 -
Funktion gibt Array nicht mehr zurück
Von Lark im Forum C/C++Antworten: 3Letzter Beitrag: 07.09.05, 16:57





Zitieren
Login






