ListView Icons
-
Also ich moechte in den einzelnen Items immer ein icon einbinden ( 16 x 16 )
Wenn ich danach google find ich so gut wie nur MFC oder tausend zeiligen komplizierten Code.
Kann mir jemand das in verstaendlichem deutsch und in WINAPI erklaeren ?
-
Hi, vllt hilft dir das:
Das ist ein Ausschnit aus nem größeren Projekt von mir...
Dürfte zu verstehen sein
.// Image-List für das Icon: HIMAGELIST hImgList = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLORDDB | ILC_MASK, 1, 0); HICON hiNoLangsFound; hiNoLangsFound = LoadIcon(g_hmDllStyle, MAKEINTRESOURCE(ICO_NO_LANG_DLLS_FOUND)); // Icon der Image-List hinzufügen: int iImgIndex = ImageList_AddIcon(hImgList, hiNoLangsFound); DestroyIcon(hiNoLangsFound); // <- GDI-Objekt freigeben ImageList_SetBkColor(hImgList, rgbListViewBkgnd); // <- Hintergrundfarbe des Controls festlegen ListView_SetImageList(hlsvLanguages, hImgList, LVSIL_SMALL); // <- Image-List zuweisen PTCHAR pszTemp; UINT uiStrLen; // std::string strReSrc wird hier initialisiert... uiStrLen = strReSrc.length() + 1; pszTemp = new TCHAR[uiStrLen]; // <- lokale Stringkopie, wg. const-Return von c_str()-Methode StrNCpy(pszTemp, strReSrc.c_str(), uiStrLen); LVITEM lvItem; lvItem.mask = LVIF_IMAGE | LVIF_TEXT; lvItem.iSubItem = 0; lvItem.iItem = 0; lvItem.iImage = iImgIndex; lvItem.pszText = pszTemp; lvItem.cchTextMax = uiStrLen; // Item hinzufügen: SendMessage(hlsvLanguages, LVM_INSERTITEM, 0, reinterpret_cast<LPARAM>(&lvItem)); delete [] pszTemp; // <- Speicher deallokierenEDIT: Text-Formatierung

-
Also ich will sowas aehnliches wie Windows Explorer machen und habe das jetzt
void GetOwnFiles() { SendMessage(hEdit_OwnDrivers,LVM_DELETEALLITEMS,0,0); SendMessage(hEdit_OwnFiles,LVM_DELETEALLITEMS,0,0); char szBuffer[1024]; char filebuffer[MAX_PATH]; int nLoop = 0; SHFILEINFO shInfo; WIN32_FIND_DATA wfd; LVITEM lvi0, lvi1; lvi0.mask = LVIF_TEXT; lvi0.iSubItem = 0; lvi0.iImage = nLoop; lvi1.mask = LVIF_TEXT; lvi1.iSubItem = 0; GetLogicalDriveStrings(1024, szBuffer); char *pch = szBuffer; ListView_SetExtendedListViewStyle(hEdit_OwnDrivers,LVS_EX_SUBITEMIMAGES); HIMAGELIST g_hImageLst = ImageList_Create(16,16,ILC_MASK | ILC_COLOR32, 5, 0); ZeroMemory(&shInfo, sizeof(SHFILEINFO)); ListView_SetImageList(hEdit_OwnDrivers, g_hImageLst, LVSIL_SMALL); while (*pch) { lvi0.iItem = nLoop; lvi0.pszText = pch; lvi0.iImage = nLoop; SHGetFileInfo(pch,FILE_ATTRIBUTE_NORMAL, &shInfo, sizeof(shInfo), SHGFI_USEFILEATTRIBUTES | SHGFI_DISPLAYNAME | SHGFI_TYPENAME | SHGFI_ICON | SHGFI_SMALLICON); ListView_InsertItem(hEdit_OwnDrivers,&lvi0); ListView_SetItemText(hEdit_OwnDrivers,lvi0.iItem,0,pch); ImageList_AddIcon(g_hImageLst, shInfo.hIcon); pch = &pch[strlen(pch) + 1]; nLoop++; } nLoop = 0; ListView_SetExtendedListViewStyle(hEdit_OwnFiles,LVS_EX_SUBITEMIMAGES); HIMAGELIST g_hImageLst2 = ImageList_Create(16,16,ILC_MASK | ILC_COLOR32, 5, 5); ZeroMemory(&shInfo, sizeof(SHFILEINFO)); ListView_SetImageList(hEdit_OwnFiles, g_hImageLst2, LVSIL_SMALL); HANDLE fHandle=FindFirstFile(Dir,&wfd); do { lvi1.iItem = nLoop; if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) )) { if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { sprintf(filebuffer,"%s",wfd.cFileName); lvi1.pszText = filebuffer; SHGetFileInfo(0,FILE_ATTRIBUTE_DIRECTORY, &shInfo, sizeof(shInfo), SHGFI_USEFILEATTRIBUTES | SHGFI_DISPLAYNAME | SHGFI_TYPENAME | SHGFI_ICON | SHGFI_SMALLICON); ImageList_AddIcon(g_hImageLst2, shInfo.hIcon); ListView_InsertItem(hEdit_OwnFiles,&lvi1); ListView_SetItemText(hEdit_OwnFiles,lvi1.iItem,0,lvi1.pszText); nLoop ++; } } } while (FindNextFile(fHandle,&wfd)); FindClose(fHandle); fHandle=FindFirstFile(Dir,&wfd); do { lvi1.iItem = nLoop; if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) )) { if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { } else { sprintf(filebuffer,"%s",wfd.cFileName); lvi1.pszText = filebuffer; SHGetFileInfo(filebuffer,FILE_ATTRIBUTE_NORMAL, &shInfo, sizeof(shInfo), SHGFI_USEFILEATTRIBUTES | SHGFI_DISPLAYNAME | SHGFI_TYPENAME | SHGFI_ICON | SHGFI_SMALLICON); ImageList_AddIcon(g_hImageLst2, shInfo.hIcon); ListView_InsertItem(hEdit_OwnFiles,&lvi1); ListView_SetItemText(hEdit_OwnFiles,lvi1.iItem,0,lvi1.pszText); nLoop ++; } } } while (FindNextFile(fHandle,&wfd)); FindClose(fHandle); }Ich weiss den letzten Teil kann man einfacher machen.
Hier das Ergebnis : http://img128.imagevenue.com/aAfkjfp01fo1i-25048/loc305/32530_ergebnis_123_305lo.jpg
-
lol, Jo Ergebnis:
http://img128.imagevenue.com/aAfkjfp01fo1i-25048/loc305/32530_ergebnis_123_305lo.jpg schrieb:
Not Found
The requested URL /aAfkjfp01fo1i-25048/loc305/32530_ergebnis_123_305lo.jpg was not found on this server.
Apache/2.0.52 (CentOS) Server at img128.imagevenue.com Port 80
-
Um.. naja das Ergebnis ist halt die Liste zeigt alle Dateien / Ordner an jedoch mit nur 1 und dem selben Icon (Ordner icon)