Étant déçu des boutons de Windows où on ne peut pas mettre de couleurs, ou placer un texte comme on veut, je me suis fait un UDF qui répond à mes attentes et que je vous propose.
Ce bouton est totalement virtuel, dessiné en GdiPlus (pas d’image importée ou autres). Le bouton a 4 positions, en pause, au survole de la souris, au clic et enfin désactivé. Je vous ai mis un vilain pas beau en bas du GUI pour voir la différence. Cliquez sur l'image pour agrandir
L'entête de l'UDF
; FUNCTIONS ====================================================================================================================
; Name ..........: _ADD_Button
; Name ..........: _ButtonState
; Name ..........: _ButtonDelete
; #FUNCTION# ====================================================================================================================
; Name ..........: _ADD_Button
; Description ...: Crée un pseudo bouton avec couleur, alignement et couleur texte. En surbrillance sous la souris et s'assombrit au clic
; Syntax ........: _ADD_Button($Left, $Top, $width, $height, $Text[, $AlignTextH = 1[, $AlignTextV = 1[, $ColorText = 0xFF000000[,
; $hFont = "Arial"[, $fSize = 9[, $iStyle = 0[, $MargeGauche = 0[, $MargeHaute = 0[, $Masq = 0]]]]]]]]])
; Parameters ....: $Left - La coordonnée X du coin supérieur gauche du contrôle.
; $Top - La coordonnée Y du coin supérieur gauche du contrôle.
; $width - Largeur du contrôle
; $height - Hauteur du contrôle
; $Text - texte du contrôle.
; $AlignTextH - [optional] Alignement horizontale du texte. 0=gauche 1=milieu 2= droite. Default is 1.
; $AlignTextV - [optional] Alignement verticale du texte. Alignement = 0 haut, 1 milieu, 2 bas. Default is 1.
; $ColorText - [optional] Couleur du texte ARGB. Default is 0xFF000000.
; $hFont - [optional] Nom de la police. Default is "Arial".
; $fSize - [optional] Taille de la police. Default is 9.
; $iStyle - [optional] Style de la police. 0 = normal, 1 = gras, 2 = Italique, etc... Default is 0. (voir _GDIPlus_FontCreate().)
; $MargeGauche - [optional] Marge sur la gauche. Default is 0.
; $MargeHaute - [optional] Marge haute. Default is 0.
; $Masq - [optional] Masque de couleur ARGB en superposition, eg: 0x20FFFF00. Default is 0 (pas de masque).
; Return values .: L'Id du control
; Author ........: Walkson
; Modified ......:
; Remarks .......:
; ===============================================================================================================================
; Name ..........: _ADD_Button
; Name ..........: _ButtonState
; Name ..........: _ButtonDelete
; #FUNCTION# ====================================================================================================================
; Name ..........: _ADD_Button
; Description ...: Crée un pseudo bouton avec couleur, alignement et couleur texte. En surbrillance sous la souris et s'assombrit au clic
; Syntax ........: _ADD_Button($Left, $Top, $width, $height, $Text[, $AlignTextH = 1[, $AlignTextV = 1[, $ColorText = 0xFF000000[,
; $hFont = "Arial"[, $fSize = 9[, $iStyle = 0[, $MargeGauche = 0[, $MargeHaute = 0[, $Masq = 0]]]]]]]]])
; Parameters ....: $Left - La coordonnée X du coin supérieur gauche du contrôle.
; $Top - La coordonnée Y du coin supérieur gauche du contrôle.
; $width - Largeur du contrôle
; $height - Hauteur du contrôle
; $Text - texte du contrôle.
; $AlignTextH - [optional] Alignement horizontale du texte. 0=gauche 1=milieu 2= droite. Default is 1.
; $AlignTextV - [optional] Alignement verticale du texte. Alignement = 0 haut, 1 milieu, 2 bas. Default is 1.
; $ColorText - [optional] Couleur du texte ARGB. Default is 0xFF000000.
; $hFont - [optional] Nom de la police. Default is "Arial".
; $fSize - [optional] Taille de la police. Default is 9.
; $iStyle - [optional] Style de la police. 0 = normal, 1 = gras, 2 = Italique, etc... Default is 0. (voir _GDIPlus_FontCreate().)
; $MargeGauche - [optional] Marge sur la gauche. Default is 0.
; $MargeHaute - [optional] Marge haute. Default is 0.
; $Masq - [optional] Masque de couleur ARGB en superposition, eg: 0x20FFFF00. Default is 0 (pas de masque).
; Return values .: L'Id du control
; Author ........: Walkson
; Modified ......:
; Remarks .......:
; ===============================================================================================================================
Le bouton peut être coloré par un masque $Masq en jouant sur la transparence afin de ne pas cacher les effets de relief. Toutes les couleurs (bouton ou texte) sont en ARGB (0xAARRGGBB), c’est-à-dire à 4 canaux, alpha (transparence), rouge, vert, bleu et en hexadécimal (ex : 0xFFA9B500 vert). Pour ceux qui ne connaissent pas, chaque canal s’écrit en deux nombres ou lettres, du plus clair au plus foncé, de F à A puis de 9 à 0. Blanc = 0xFFFFFFFF et noir = 0xFF000000 avec toutes les combinaisons possible. Pour le canal alpha, 0xFF rend opaque et 0x00 rend totalement transparent. A titre d’exemple, le bouton jaune de l’exemple a comme valeur 0x20FFFF00 et le bouton grisé 0x609A9A9A. On a une forte transparence proche de 0x00.
Pour désactiver le bouton, utilisez _ButtonState() et pour le détruire _ButtonDelete() (efface les handles du array et évite des conflits). Autrement, le bouton (qui est en fait un label) réagit à GUICtrlSetState() ou GUICtrlRead () comme n’importe quel control, seul le texte ne peut être changé.
Dans le Zip, l’UDF et un exemple.
Réalisé avec Autoit v3.3.14.5 Sous Win 7 (32)
Merci de vos observations ou remarques