Astuce imagelist comctl32.ocx

Description

J'utilise dans certains de mes programmes le composant COMCTL32.OCX ( Microsoft Windows Common Controls 5.0 (SP2) ), car les controles fournis avec adoptent les style XP (si l'appli tourne avec un fichier manifest, etc...). Cepandant il y a un problème avec le controle ImageList fournit dans ce composant, en stockant des icones dedans, les icones sont " corrompues " (voir capture) dés la 2ème execution...
La seule solution etait de vider l'ImageList et de recharger les icones avant chaque nouvelle compilation >> super chiant !!
le probleme n'existe pas avec le control ImageList du composant MSCOMCTL.OCX ( Microsoft Windows Common Controls 6.0 (SP6) ) , mais les controles de COMCTL32.OCX ne peuvent pas etre associés avec le controle ImageList de MSCOMCTL.OCX (Sinon c'est pas drole :P)
En fait la solution est de mettre ses icones dans un controle ImageList de MSCOMCTL.OCX et de charger les icones dans le controle ImageList de COMCTL32.OCX depuis le code dans l'evenement load de la feuille ;)

C'est pas trés clair mais je sais pas comment expliqué ca... La capture vous aiderat à comprendre...

J'ai cherché longtemps à résoudre ce probleme en vain et je n'ai rien trouvé sur forum ou dans les sources... Si une source similaire a deja été déposé ici , désolé !!

Source / Exemple :


Dim i As Integer

' On remplit le controle ImageList de COMCTL32.OCX
' avec le controle ImagList de MSCOMCTL.OCX
For i = 1 To ImageListMSCOMCTL.ListImages.Count
   ImageListCOMCTL32(1).ListImages.Add , , ImageListMSCOMCTL.ListImages(i).Picture
Next

For i = 0 To 1 ' Boucle pour ajouter les boutons dans les 2 toolbars
   ToolbarCOMCTL32(i).ImageList = ImageListCOMCTL32(i) ' Initialisations de la toolbar avec le control ImageList correspondant
   With ToolbarCOMCTL32(i).Buttons
      .Add , , "Rafraichir", , 1 ' Ajout des bouttons
      .Add , , "Ajouter", , 2
      .Add , , "Editer", , 3
      .Add , , "Supprimer", , 4
      .Add , , "Imprimer", , 5
      .Add , , "Quitter", , 6
   End With
Next

Conclusion :


Voila, de cette manière il n'est plus necessaire de recharger les icones avant chaque compilation du programme.
A noter aussi que les icones XP (32 bits RGB/A) ne sont pas compatibles avec VB , mais il y a une alternative aux icones 256 couleurs : Les icones "True Colors" (RGB - 24 bits - 16,8 M de couleurs) sont elles compatibles !! Perso je les créé avec axialis iconworkshop 6 ;)
(Je joint les icones pour exemple)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.