begin process at 2012 05 29 09:18:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Icone listview


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Icone listview

mardi 19 février 2008 à 17:47:46 | Icone listview

akalys

Bonjour à tous,
J'ai le code suivant

    SHFILEINFO sfi;
    ZeroMemory(&sfi, sizeof(SHFILEINFO));
    SHGetFileInfo(name, FILE_ATTRIBUTE_NORMAL,            &sfi,sizeof(SHFILEINFO),SHGFI_USEFILEATTRIBUTES | SHGFI_ICON);
    HIMAGELIST himage;
    himage=ImageList_Create(16, 16, ILC_COLORDDB | ILC_MASK, 3, 0);
    ListView_SetExtendedListViewStyle(tmplistview, LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT); //ajouet checkbox dans la listeview
    ListView_SetItemText(tmplistview,0,nCol,name);    //ajout du texte de l'item dans nCol, nItem
    LvItem.stateMask = 0xFFFF;
    LvItem.cchTextMax=260;
    LvItem.iImage=ImageList_AddIcon(himage,sfi.hIcon);
    SendMessage(tmplistview,LVM_SETIMAGELIST,LVSIL_SMALL,(LPARAM)himage);



J'ai un problème et a chaque fois tout mes icone ce reinitialise avec l'icone de l'item courant.

merci




Vive le rugby XIII
mercredi 20 février 2008 à 06:51:44 | Re : Icone listview

Renfield

Administrateur CodeS-SourceS
ne m'etonne pas...
tu recréé une imageliste et tu l'affecte a ta listview

ta listview n'a donc plus qu'une seule icone qu'elle peut afficher..

que souhaites tu faire ?


Renfield
Admin CodeS-SourceS- MVP Visual Basic
mercredi 20 février 2008 à 09:29:29 | Re : Icone listview

akalys

Bien je souhaiterais que quand j'ajoute un fichier il gardfe son icone qui lui est associer, et ce pour chaque item que j'ajouterais a la listview.





Vive le rugby XIII
mercredi 20 février 2008 à 09:33:58 | Re : Icone listview

Renfield

Administrateur CodeS-SourceS
donc tu souhaites juste ajouter une icone a la listview
ajouter un item associé a cette icone...

là, tu créé une nouvelle imageliste, tu ajoutes l'icone, l'item lié a cette icone.
en gros :
    SHFILEINFO sfi;
    ZeroMemory(&sfi, sizeof(SHFILEINFO));
    SHGetFileInfo(name, FILE_ATTRIBUTE_NORMAL,            &sfi,sizeof(SHFILEINFO),SHGFI_USEFILEATTRIBUTES | SHGFI_ICON);
    HIMAGELIST himage;
    SendMessage(tmplistview,LVM_GETIMAGELIST,LVSIL_SMALL,(LPARAM)himage);

    ListView_SetItemText(tmplistview,0,nCol,name);    //ajout du texte de l'item dans nCol, nItem
    LvItem.stateMask = 0xFFFF;
    LvItem.cchTextMax=260;
    LvItem.iImage=ImageList_AddIcon(himage,sfi.hIcon);


pourquoi ne pas d'ailleurs, utiliser la msglist système ? si c'est juste pour garder les icones en double, c'est dommage...




Renfield
Admin CodeS-SourceS- MVP Visual Basic
mercredi 20 février 2008 à 09:37:42 | Re : Icone listview

Renfield

Administrateur CodeS-SourceS

[edit]
je voulais dire ImgList system

SHFILEINFO sfi;
himageList = GetFileInfo("C:\\", SHGFI_SYSICONINDEX Or SHGFI_SMALLICON, sfi);


Renfield
Admin CodeS-SourceS- MVP Visual Basic

mercredi 20 février 2008 à 09:49:09 | Re : Icone listview

akalys

tu ne crée pas d'image list dans ton code.
et getfileinfo visual me dis qu'il connais pas ^^.

il ne faudrait pas justement que je crée plusieurs image list ?



Vive le rugby XIII
mercredi 20 février 2008 à 10:03:15 | Re : Icone listview

Renfield

Administrateur CodeS-SourceS
il faut en créer UNE imageliste, la première fois, c'est tout...
ensuite, simplement se contenter d'y ajouter tes icones...

toi, tu recréé actuellement une nouvelle imagelist a chaque fichier, mais la listview n'en accepte qu'une a la fois, par format d'affichage.... du coup, tu perds tes anciennes icones

pour le GetFileInfo, pardon, c'est une sub (extraite de http://files.codes-sources.com/fichier.aspx?id=7433&f=Module_IDL_Operations.bas) qui simplifie en réalité ShGetFileInfo.
pour l'uimagelist systeme, il faudrait plutot faire :

SHFILEINFO sfi;
himageList = SHGetFileInfo("C:\\", 0, &sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON);


Renfield
Admin CodeS-SourceS- MVP Visual Basic
mercredi 20 février 2008 à 10:08:40 | Re : Icone listview

akalys

D'accord je viens de comprendre, il faut que je crée une seul image liste une seule fois et que je mette tout les icone dedans.

Il faut donc que je crée mon image list en dehors de ma listview si je montre pas?

Car sinon elle va être recrée a chaque fois.


je viens d'essayer ta commande

himageList = SHGetFileInfo("C:\\", 0, &sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON);

Et sa me met une error :    cannot convert from 'DWORD_PTR' to 'HIMAGELIST




Vive le rugby XIII
jeudi 21 février 2008 à 19:49:21 | Re : Icone listview

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
Voici globalement comment il faut procéder:
Tu peux utiliser l'ImageList du système. Pas besoin de créer la tienne. Voici comment récupérer son HANDLE:
SHFILEINFO shi;
HIMAGELIST himglist=(HIMAGELIST)SHGetFileInfo(0,0,&shi,sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON);

Tu attaches ensuite ce HANDLE à ta ListView:
ListView_SetImageList(hListView,himglist,LVSIL_SMALL);
Maintenant, à chaque fois que tu as besoin d'ajouter un élément à ta ListView, tu   récupères l'index de l'icone correspondant à l'extension du fichier en faisant:
SHGetFileInfo(szchemindufichier,0,&shi,sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
L'index de l'icone se retrouvera dans le membre iIcon de la structure SHFILEINFO.
Tu passeras sa valeur au membre iImage de la structure LVITEM:
LvItem.iImage=shi.iIcon;
Il suffira enfin d'ajouter l'item à ta ListView:
ListView_InsertItem(hListView,&LvItem);

Pour les fichiers EXE, il faudra extraire l'icone depuis l'exécutable en utilisant ExtractIcon() par exemple.
Voilà j'espère n'avoir rien omis.
jeudi 21 février 2008 à 22:04:03 | Re : Icone listview

Renfield

Administrateur CodeS-SourceS

j'avais tenté de le mettre sur cette voie, mais apparemment sans succès ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic

1 2

Cette discussion est classée dans : icone, listview, himage, sfi, shfileinfo


Répondre à ce message

Sujets en rapport avec ce message

icone des applications dans une listview [ par ebooserge ] bonjor a tous, voila jai un petit probleme avec les listview. j'arrive a creer des listview avec des icones contenues dans une HIMAGELIST que je cree Récupérer le texte d'une icone d'une ListView [ par MorbhAck ] Bonsoir a tous !J'aurais un petite question ...Je voudrais récupérer le nom d'une icone d'une listView.J'ai une piste mais je block un peu :shttp://ms listview et colonnes borland C++ 6.0 [ par bougnat83 ] bonjour, j'ai créé une listview sous borland c++ 6.0, avec deux colonnes. J'aimerais maintenant effacer le contenu de toute ma listview remplie précéd Icone du .exe [ par ipascual ] Bonjour,Je suis en train de faire un programme, et j`aimerais changer l`icone du fichier executable, pour pouvoir faire la difference entre plusieurs changer l'icone d'une fenêtre SDL [ par zonebleue ] Bonjour,je voudrais savoir comment changer l'icône d'une fenêtre SDL ? merci d'avance Simuler un doubleclik depuis Windev sur un icone du systray ? [ par nascimo ] Bonjour, je n'arrive pas à simuler un doubleclik sur un iconne du systray depuis Windev ...Je récupére bien le handle de la fenêtre mais la commande s erreur icone visual C++ [ par crocblanc ] Bonjour!!!! Je suis en train de créer une application sur visual c++ express 2005 et j'ai voulu mettre une icone pour la fenetre principale à côté du Prob listview [ par titi4659 ] Bonjour, J'essaye de faire fonctionne une listview.je suis arrivé au stade ou je souhaite récupéré le numéro de la colonne, pour cela j'utilise l'evén MFC: listeview, longueur max [ par blinix123 ] Bonjour,Voila j'ai passer mon sujet aujourd'hui et le prof m'as fais sécher:j'ai un programme fais avec les MFC, et j'ai une listview, et il m'as dema ListView [ par ncoder ] Bonjour à tous !Je fais un programme avec une listview à 5 colonnes, dont la dernière est une progressbar.Pour gérer tout ça, j'ai utilisé le style LV


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,789 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales