racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 17 déc. 2006 à 12:14
Salut,
C'est possible avec l'API Windows. La listbox doit avoir le style LBS_OWNERDRAWFIXED. Elle doit aussi avoir le style LBS_HASSTRINGS pour pouvoir afficher son contenu. La fenêtre mère reçoit le message WM_DRAWITEM quand le contenu de la listbox sera affiché. lParam contient un pointeur sur une structure DRAWITEMSTRUCT. Cette structure contient tout ce qu'il faut pour afficher tous les items de la listbox. SetBkMode() permet de passer au mode transparent avant l'écriture des items avec DrawText(). Si la listbox n'a pas de barre de défilement, on obtient facilement la transparence du fond. Il suffit de sous-classer la listbox et faire un return 1; pour le message WM_ERASEBKGND. Dans le cas contraire, c'est un peu plus compliqué car il faudra sauvegarder le fond original de la listbox pour pouvoir le restaurer apès un défilement.