En tant que débutant avec AutoIt, j'ai eu du mal à afficher du texte couloré (de différentes couleurs) dans un GUI car la fonction n'existe pas
Jje partage donc mon expérience afin que le temps passé profite à d'autres

Je précisse que cet exemple est (largement) inspiré du script de "RichEdit" (merci à son auteur)
► Afficher le texte
Code : Tout sélectionner
#include <GuiConstants.au3>
#Include <GuiEdit.au3>
Global $tagCHARFORMAT2 = "uint;int;dword;long;long;dword;byte;byte;char[32];short;short;long;long;long;short;short;byte;byte;byte;byte"
Global $tcharformat = DllStructCreate($tagCHARFORMAT2)
DllStructSetData($tcharformat, 1, DllStructGetSize($tcharformat))
DllOpen("MSFTEDIT.DLL") ;doit etre dans \windows\system32
$Main_GUI = GUICreate("Exemple de Couleur de Texte", 300, 150, -1, 150)
$Text_Win=_WinAPI_CreateWindowEx(512, "RichEdit50W", "", BitOR($WS_CHILD, $ES_WANTRETURN, $ES_NOHIDESEL, $WS_VSCROLL, $WS_TABSTOP, $WS_VISIBLE, $ES_MULTILINE), 10, 10, 280, 130, $Main_GUI)
GUISetState()
;applique à toute la fenetre (=0) ou qu'au caractere (=1)
$NotAllChar=1
;exemple de texte couloré
SetNameFont("Fixedsys")
SetColorBkG(0x000000)
SetColorBkFont(0xFFFFFF)
SetColorFont( 0x000000)
_GUICtrlEdit_AppendText($Text_Win, "Ceci est noir")
SetColorFont( 0x00FF00)
_GUICtrlEdit_AppendText($Text_Win, "ceci est vert"&@CRLF&"ceci est toujours vert"&@CRLF)
SetColorFont( 0x0000FF)
_GUICtrlEdit_AppendText($Text_Win, "ceci est rouge"&@CRLF)
SetColorBkFont(0xFFFF00)
_GUICtrlEdit_AppendText($Text_Win, "ceci est noir")
SetNameFont("Fixedsys")
SetColorFont( 0xFF0000)
SetColorBkG(0x000000)
SetColorBkFont(0xFF00FF)
_GUICtrlEdit_AppendText($Text_Win, "ceci est Bleu"&@CRLF)
SetNameFont("Fixedsys")
SetColorBkFont(0x00FFFF)
_GUICtrlEdit_AppendText($Text_Win, "ceci est noir"&@CRLF)
;
SetNameFont("Lucida Console")
SetColorBkG(0x000000)
SetColorBkFont(0xF0000F)
SetColorFont( 0x000000)
_GUICtrlEdit_AppendText($Text_Win, "Ceci est noir")
SetColorFont( 0x00FF00)
_GUICtrlEdit_AppendText($Text_Win, "ceci est vert"&@CRLF&"ceci est toujours vert"&@CRLF)
SetColorFont( 0x0000FF)
SetNameFont("Courier")
_GUICtrlEdit_AppendText($Text_Win, "ceci est rouge"&@CRLF)
SetColorBkFont(0x800000)
_GUICtrlEdit_AppendText($Text_Win, "ceci est noir")
SetNameFont("Fixedsys")
SetColorFont( 0xFF0000)
SetColorBkG(0x000000)
SetColorBkFont(0x0000F0)
_GUICtrlEdit_AppendText($Text_Win, "ceci est Bleu"&@CRLF)
SetSizeFont(32)
SetColorBkFont(0x00FFFF)
_GUICtrlEdit_AppendText($Text_Win, "ceci est noir");
MsgBox(0, "Example Couleur", "Fini!")
Exit
;===============================================================================================================================
Func SetColorFont($Color)
DllStructSetData($tcharformat, 2, 0x40000000)
DllStructSetData($tcharformat, 6, $Color)
_SendMessage($Text_Win, 1092, $NotAllChar, DllStructGetPtr($tcharformat))
EndFunc
Func SetColorBkFont($Color)
DllStructSetData($tcharformat, 2, 0x4000000)
DllStructSetData($tcharformat, 12, $Color)
_SendMessage($Text_Win, 1092, $NotAllChar, DllStructGetPtr($tcharformat))
EndFunc
Func SetColorBkG($Color)
_SendMessage($Text_Win, 1091, 0, 0x000000)
EndFunc
Func SetNameFont($FName)
DllStructSetData($tcharformat, 2, 0x20000000)
DllStructSetData($tcharformat, 9, $FName)
_SendMessage($Text_Win, 1092, $NotAllChar, DllStructGetPtr($tcharformat))
EndFunc
Func SetSizeFont($Size)
DllStructSetData($tcharformat, 2, 0x80000000)
DllStructSetData($tcharformat, 4, $Size*20)
_SendMessage($Text_Win, 1092, $NotAllChar, DllStructGetPtr($tcharformat))
EndFunc
En espérant que cela serve à la communauté des AutoItistes ...