ImageList et ListView

cs_RL Messages postés 30 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 27 décembre 2004 - 22 juin 2004 à 15:31
cs_RL Messages postés 30 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 27 décembre 2004 - 28 juin 2004 à 15:53
Bonjour,
Mon Pb est le suivant:
Dans un formulaire d'essai j'ai placé un ctrl ListView, un ctrl ImageList, un ctrl PictureBox et j'écécute le code suivant:

dim Hi as long
dim a as listitem
- j'extrais un icone d'un fichier .exe :
Hi = ExtractIcon(Me.hDC, "d:\Test\GRAPHICS.exe", 1)
-Je dessine cet icone dans le contrôle PictureBox:
DrawIcon Picture1.hDC, 0, 0, Hi
-J'ajoute cet icone à mon ImageList
ImageList1.ListImages.Add , "toto", Picture1.Image
-J'affecte ImageList à mon ListView
ListView1.Icons = ImageList1
-J'ajoute l'item à mon ListeView
Set a = ListView1.ListItems.Add(, , "toto", 1)

A la fin de l'écution de ce code, l'icone apparaît bien dans le PictureBox mais dans le ListeView il n'apparaît qu'un rectangle gris dans l'image de l'icone.
Remarque: Si j'extrais manuellement l'icone du .exe --->.ico
que je l'affecte manuellement à PictureBox puis que j'exécute le code à partir de ImageList1.ListImages.Add , "toto", Picture1.Image
cela marche

Merci à celui qui pourra m'aider

2 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 25
26 juin 2004 à 11:38
salut

déjà je mettrais ExtractIcon(App.hInstance,...

cela dépend en partie de la propriété autoredraw, MSDN dit
"Note Comme la valeur de la propriété hDC peut changer pendant l'exécution d'un programme, n'enregistrez pas la valeur renvoyée dans une variable ; utilisez plutôt la propriété hDC chaque fois que nécessaire.

La propriété AutoRedraw peut provoquer une modification de la propriété hDC. Si la valeur de la propriété AutoRedraw est True pour une feuille ou un conteneur PictureBox, hDC agit comme un descripteur de contexte de périphérique dugraphique permanent (équivalant à la propriété Image). Lorsque la valeur de la propriété AutoRedraw est False, hDC devient la valeur réelle de la fenêtre Feuille ou du conteneur PictureBox. La valeur de la propriété hDC peut changer pendant l'exécution d'un programme, quelle que soit la valeur de la propriété AutoRedraw.

Si la valeur False est affectée à la propriété HasDC, un nouveau contexte de périphérique sera créé par le système et la valeur de la propriété hDC changera à chaque appel.
"
donc il faut peut etre utiliser la propriété Picture ? ou AutoRedraw True et Visible False...

voilà

ShareVB
0
cs_RL Messages postés 30 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 27 décembre 2004
28 juin 2004 à 15:53
Bonjour
Merci mille fois.
Je n'ai pas tout compris de vos explications mais la commande : Picture1.AutoRedraw = true + App.HInstance fonctionne parfaitement.
0