pschilling
Erfahrenes Mitglied
Hi Stefan,
du musst des von mir auch richtig lesen/übernehmen ;-)
Ich denke, Init ist eine Methode, welche du in deiner OnInitDialog-Methode aufrufst.
Dort darfst du nur folgenden Code ausführen:
Das führt dazu, dass die System-Image-List in deiner Klassen-Member-Variablen m_imgList gespeichert wird.
Dann hast du sicherlich noch eine Methode, welche dir die Liste mit dem Inhalt eines beliebigen Verzeichnisses gefüllt wird. Ich nenne diese mal fillDirContent(CString path);
die kann dann so in etwa so aussehen:
Also die kleine Demo die ich dafür gecoded habe funktioniert super so ;-)
Lese die MSDN zu meinen verwendeten Methoden und probiere etwas rum!
Ich bin sicher du wirst bekommen, was du dir vorgestellt hast ;-)
Grüße,
Pit
du musst des von mir auch richtig lesen/übernehmen ;-)
Ich denke, Init ist eine Methode, welche du in deiner OnInitDialog-Methode aufrufst.
Dort darfst du nur folgenden Code ausführen:
Code:
SHFILEINFO fi;
HIMAGELIST hSysImgList = (HIMAGELIST)SHGetFileInfo("C:\\", 0, &fi, sizeof(SHFILEINFO), SHGFI_SMALLICON|SHGFI_SYSICONINDEX ); // Liefert das Handle der System-Image-List
m_imgList.Attach(hSysImgList); // Diese attachen wir an unser CImageList Objekt
m_fileList.SetImageList(&m_imgList, LVSIL_SMALL); // Und hängen unsere Imagelist an das Listcontrol.
Das führt dazu, dass die System-Image-List in deiner Klassen-Member-Variablen m_imgList gespeichert wird.
Dann hast du sicherlich noch eine Methode, welche dir die Liste mit dem Inhalt eines beliebigen Verzeichnisses gefüllt wird. Ich nenne diese mal fillDirContent(CString path);
die kann dann so in etwa so aussehen:
Code:
void CMyDlg::fillDirContent(CString path) {
SHFILEINFO fi;
CFileFind ff;
BOOL bContinue = ff.FindFile(path + "\\*");
while( bContinue ) {
bContinue = ff.FindNextFile();
CString fPath = ff.GetFilePath();
CString fName = ff.GetFileName();
if( fName == "." || fName == ".." ) {
continue;
}
memset(&fi,0,sizeof(SHFILEINFO));
SHGetFileInfo(fPath, 0, &fi, sizeof(SHFILEINFO), SHGFI_SMALLICON|SHGFI_SYSICONINDEX );
UINT attrs = GetFileAttributes(fPath);
if( (attrs&FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY ) {
// Verzeichnis, vorne Einfügen, sortierung kannst du hier auch einbauen ;-)
myListCtrl.InsertItem(0,fName);
}
else {
// Datei, hinten einfügen, sortierung kannst du hier auch einbauen ;-)
myListCtrl.InsertItem(10000,fName);
}
}
ff.Close();
}
Also die kleine Demo die ich dafür gecoded habe funktioniert super so ;-)
Lese die MSDN zu meinen verwendeten Methoden und probiere etwas rum!
Ich bin sicher du wirst bekommen, was du dir vorgestellt hast ;-)
Grüße,
Pit
Zuletzt bearbeitet: