Attribuer icone en fonction de l'extension

Signaler
Messages postés
246
Date d'inscription
dimanche 2 juin 2002
Statut
Membre
Dernière intervention
11 septembre 2016
-
Messages postés
2
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
25 avril 2005
-
Bonjour,
Je suis en train de travailler sur un explorateur de fichier (du style 'l'explorateur windows'), et je cherche comment attribuer les bonnes icones à mes items dans ma ListView (sans avoir à toutes les redessiner lol).
Il me semble que l'information qui associe une icone à une extension est stoquée dans les "Types Mimes" ? Mais je ne sais pas trop ce que c'est, ni comment on y accede.

:question) - :question) - :question) - :question) - :question) - :question) Glipper

6 réponses

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Il faut que tu utilises la fonction SHGetFileInfo(), regarde la documentation dans la MSDN.

Kaid - kaid.fr.st
Messages postés
258
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
16 août 2004

Pour les "types Mimes", je connais pas, mais tu peux regarde la source de jackosking pour recupere les HICON en focntion d'un fichier:
http://www.cppfrance.com/article.aspx?Val=2043
Sinon, je dois poster une MAJ de mon explorer, avec un menu, et attribution des bonnes icones aux fichiers. Je pense le poster d'ici une semaine.
Bye,Xentor609
Messages postés
246
Date d'inscription
dimanche 2 juin 2002
Statut
Membre
Dernière intervention
11 septembre 2016
1
Super, apparament, ca à l'air de marche lol
mais une fois que j'ai l'handle de l'icone,
je suppose que je dois la charger...
Je suppose qu'il faut utiliser LoadIcon (je l'ai trouvé par hasard dans l'aide de Visual)... mais ca marche pas. Voila mon code :

SHFILEINFO sfi;
ZeroMemory(&sfi, sizeof(SHFILEINFO));
SHGetFileInfo("iop.txt", FILE_ATTRIBUTE_NORMAL, &sfi,sizeof(SHFILEINFO),SHGFI_USEFILEATTRIBUTES | SHGFI_ICON);

tvinsert.hParent = hselect;
tvinsert.hInsertAfter = hselect; tvinsert.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_STATE;
tvinsert.item.state = TVIS_SELECTED;
tvinsert.item.pszText = "iop.txt";
tvinsert.item.iImage = sfi.iIcon;
tvinsert.item.iSelectedImage=3;

SendMessage(hWnd, TVM_INSERTITEM, 0, (LPARAM)&tvinsert);
Messages postés
258
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
16 août 2004

Pour loader l'icone et l'ajouter a ton imagelist
void AddIconIMG_List(HIMAGELIST &hIml, LPCTSTR lpIconName)
{
HICON hIcon=LoadIcon(hInst,lpIconName);
ImageList_AddIcon(hIml,hIcon); 
DeleteObject(hIcon);
}

Bye,Xentor609
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
Bizzare je suis sur le meme probleme ... lol

bon voici-voila :

// --------------------------------
static void InitListViewImageLargeIcon(
HWND hwndLV,
int *tabLargeIcon
)
{
HIMAGELIST himlLarge;
HICON hIconItem;
HINSTANCE hInstance;

hInstance = MY_GET_INSTANCE(hwndLV);

// creer la liste d'images
if((himlLarge = ImageList_Create(
GetSystemMetrics(SM_CXICON),
GetSystemMetrics(SM_CYICON),
FALSE,
4,
1)) == NULL)
{
// c'est la fin, il y a eu une erreur
DisplayLastError();
}

// SMALL
hIconItem = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON_RED));
tabLargeIcon[0] = ImageList_AddIcon(himlLarge,hIconItem);
DeleteObject(hIconItem);
hIconItem = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON_GREEN));
tabLargeIcon[1] = ImageList_AddIcon(himlLarge,hIconItem);
DeleteObject(hIconItem);
hIconItem = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON_BLUE));
tabLargeIcon[2] = ImageList_AddIcon(himlLarge,hIconItem);
DeleteObject(hIconItem);
hIconItem = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON_YELLOW));
tabLargeIcon[3] = ImageList_AddIcon(himlLarge,hIconItem);
DeleteObject(hIconItem);

if(ListView_SetImageList(hwndLV, himlLarge, LVSIL_NORMAL) == NULL)
{
//DisplayLastError();
}
}

(je t'enverai toutes les sources !)

Bonnes vacances !

JCDjcd
:-p :sleepy) :shy) :sleepy) :-p
Messages postés
2
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
25 avril 2005

Slt

et si l'on veut récupérer, pour des images, la miniature (comme avec
windows pour l'aperçu) au lieu de récupérer l'icone (correspondant au
format).



Merci et a bientot

la programmation c'est comme les rêves, y a des jours on préfére oublier