
J'ai eu l'idée de crée ceci, en faite j'avais déjà eu l'idée
mais j'avais laisser tomber tellement que c'étais dur
et puis est repris mais cette fois avec une approche différente et réalisable
pas si dur que sa en fin de compte enfin si on veut

J’ai beaucoup ramé pour les couleurs mais est fini par y arriver

Mais la cette fois si je rame vraiment et est épuiser tous mon stocke de neurones

La ou sa coince c’est quand on écrie avec des retours a la ligne
Le résulta n’est pas du tous satisfaisant
Le message démo marche mais c’est tous
Pourriez-vous m’aider s’il vous plaie

Code : Tout sélectionner
Enumeration
#Fentre
EndEnumeration
Enumeration
#Editor_0
#Button_1
#Button_2
#Button_3
#MenuPopup
EndEnumeration
Structure CHARFORMAT2_
cbSize.l
dwMask.l
dwEffects.l
yHeight.l
yOffset.l
crTextColor.l
bCharSet.b
bPitchAndFamily.b
szFaceName.b[#LF_FACESIZE]
_wPad2.w
wWeight.w
sSpacing.w
crBackColor.l
lcid.l
dwReserved.l
sStyle.w
wKerning.w
bUnderlineType.b
bAnimation.b
bRevAuthor.b
bReserved1.b
EndStructure
Global CouleurTexte
Global CouleurFondTexte
;Future proof!
CompilerIf Defined(ENM_LINK, #PB_Constant)
CompilerElse
#ENM_LINK = $04000000
CompilerEndIf
CompilerIf Defined(CFM_LINK, #PB_Constant)
CompilerElse
#CFM_LINK = $00000020
CompilerEndIf
CompilerIf Defined(CFE_LINK, #PB_Constant)
CompilerElse
#CFE_LINK = $0020
CompilerEndIf
CompilerIf Defined(CFE_SUBSCRIPT, #PB_Constant)
CompilerElse
#CFE_SUBSCRIPT = $00010000
CompilerEndIf
CompilerIf Defined(CFE_SUPERSCRIPT, #PB_Constant)
CompilerElse
#CFE_SUPERSCRIPT = $00020000
CompilerEndIf
CompilerIf Defined(CFM_SUBSCRIPT, #PB_Constant)
CompilerElse
#CFM_SUBSCRIPT = #CFE_SUBSCRIPT | #CFE_SUPERSCRIPT
#CFM_SUPERSCRIPT=#CFM_SUBSCRIPT
CompilerEndIf
CompilerIf Defined(CFM_BACKCOLOR, #PB_Constant)
CompilerElse
#CFM_BACKCOLOR =$4000000
CompilerEndIf
Procedure.l IsMouseOverGadget(Gadget) ; gestion du passge de la souris sur le gadget
If IsGadget(Gadget)
GetWindowRect_(GadgetID(Gadget),GadgetRect.RECT)
GetCursorPos_(mouse.POINT)
If mouse\x>=GadgetRect\Left And mouse\x<=GadgetRect\right And mouse\y>=GadgetRect\Top And mouse\y<=GadgetRect\bottom
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndIf
EndProcedure
Procedure Editor_BackColor(Color.l)
format.CHARFORMAT2
format\cbSize = SizeOf(CHARFORMAT2)
format\dwMask = #CFM_BACKCOLOR
format\crBackColor = Color
SendMessage_(GadgetID(#Editor_0), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
; Set the Text color for the Selection
; in RGB format
Procedure Editor_Color(Color.l)
format.CHARFORMAT2
format\cbSize = SizeOf(CHARFORMAT2)
format\dwMask = #CFM_COLOR
format\crTextColor = Color
SendMessage_(GadgetID(#Editor_0), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
Procedure Couleur_police(Couleur_texte, Couleur_fond)
CouleurTexte = Couleur_texte
CouleurFondTexte = Couleur_fond
Editor_BackColor(Couleur_fond)
Editor_Color(Couleur_texte)
EndProcedure
Procedure CaracteristiqueSelection()
format.CHARFORMAT2
format\cbSize = SizeOf(CHARFORMAT2)
format\dwMask = #CFM_COLOR
SendMessage_(GadgetID(#Editor_0), #EM_GETCHARFORMAT, #SCF_SELECTION, @format)
CouleurTexte = format\crTextColor
format.CHARFORMAT2
format\cbSize = SizeOf(CHARFORMAT2)
format\dwMask = #CFM_BACKCOLOR
SendMessage_(GadgetID(#Editor_0), #EM_GETCHARFORMAT, #SCF_SELECTION, @format)
CouleurFondTexte = format\crBackColor
EndProcedure
Procedure selection_libre(ligne_de_depart.l, caractere_de_depart.l, ligne_de_fin.l, caractere_de_fin.l)
If IsGadget(#Editor_0)
ligne_de_depart - 1
sel.CHARRANGE
sel\cpMin = SendMessage_(GadgetID(#Editor_0), #EM_LINEINDEX, ligne_de_depart, 0) + caractere_de_depart - 1
If ligne_de_fin = -1
ligne_de_fin = SendMessage_(GadgetID(#Editor_0), #EM_GETLINECOUNT, 0, 0) - 1
EndIf
sel\cpMax = SendMessage_(GadgetID(#Editor_0), #EM_LINEINDEX, ligne_de_fin, 0)
If caractere_de_fin = -1
sel\cpMax + SendMessage_(GadgetID(#Editor_0), #EM_LINELENGTH, sel\cpMax, 0)
Else
sel\cpMax + caractere_de_fin - 1
EndIf
SendMessage_(GadgetID(#Editor_0), #EM_EXSETSEL, 0, @sel)
EndIf
EndProcedure
Procedure selectionner_caracteres(ligne, position_depart, position_fin)
selection_libre(ligne, position_depart, ligne - 1, position_fin)
EndProcedure
Procedure deplacer_cursseur_console(ligne, position)
If IsGadget(#Editor_0)
x = position
y = ligne
If x = - 1
x = - 9999
EndIf
If y = - 1
y = 9999
EndIf
; Set cursor position
REG = GadgetID(#Editor_0)
CharIdx = SendMessage_(REG,#EM_LINEINDEX,y-1,0)
LLength = SendMessage_(REG,#EM_LINELENGTH,CharIdx,0)
If LLength >= x-1
CharIdx + x-1
EndIf
Range.CHARRANGE
Range\cpMin = CharIdx
Range\cpMax = CharIdx
SendMessage_(REG,#EM_EXSETSEL,0,Range)
EndIf
EndProcedure
Procedure ecrire(Texte$, CouleurDuTexte, CouleurDuFondDuTexte)
Couleur_police(CouleurDuTexte, CouleurDuFondDuTexte)
SendMessage_(GadgetID(#Editor_0), #EM_REPLACESEL, 0, Texte$)
EndProcedure
Procedure.l renvoiller_position_cursseur_Y_console()
If IsGadget(#Editor_0)
; returns Y-Pos of Cursor
REG = GadgetID(#Editor_0)
SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE)
position_cursseur_Y_console = SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1
ProcedureReturn position_cursseur_Y_console
EndIf
EndProcedure
Procedure Open_Fentre()
If OpenWindow(#Fentre, 361, 278, 470, 305, "Editeur de message console", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
EditorGadget(#Editor_0, 5, 5, 460, 245)
CreatePopupImageMenu(#MenuPopup, #PB_Menu_ModernLook)
MenuTitle("Couleurs")
OpenSubMenu("Couleur du texte")
MenuItem(114, "Noir")
MenuItem(115, "Bleu")
MenuItem(116, "Vert")
MenuItem(117, "Cyan")
MenuItem(118, "Rouge")
MenuItem(119, "Magenta")
MenuItem(120, "Brun")
MenuItem(121, "Gris clair")
MenuItem(122, "Gris foncé")
MenuItem(123, "Bleu clair")
MenuItem(124, "Vert clair")
MenuItem(125, "Cyan clair")
MenuItem(126, "Rouge clair")
MenuItem(127, "Magenta clair")
MenuItem(128, "Jaune")
MenuItem(129, "Blanc")
MenuBar()
CloseSubMenu()
OpenSubMenu("Couleur du fond")
MenuItem(130, "Noir")
MenuItem(131, "Bleu")
MenuItem(132, "Vert")
MenuItem(133, "Cyan")
MenuItem(134, "Rouge")
MenuItem(135, "Magenta")
MenuItem(136, "Brun")
MenuItem(137, "Gris clair")
MenuItem(138, "Gris foncé")
MenuItem(139, "Bleu clair")
MenuItem(140, "Vert clair")
MenuItem(141, "Cyan clair")
MenuItem(142, "Rouge clair")
MenuItem(143, "Magenta clair")
MenuItem(144, "Jaune")
MenuItem(145, "Blanc")
MenuBar()
CloseSubMenu()
CloseSubMenu()
ButtonGadget(#Button_1, 175, 265, 115, 27, "Valider le message")
ButtonGadget(#Button_2, 302, 265, 115, 27, "Annuler le message")
ButtonGadget(#Button_3, 49, 265, 115, 27, "Aperçus du message")
Couleur_police(0, RGB(255, 255, 255))
; Petite démo:
SetGadgetColor(#Editor_0, #PB_Gadget_BackColor, 0)
ecrire("Si ", RGB(255, 255, 0), 0)
ecrire("je ", RGB(255, 0, 0), 0)
ecrire("devais ", RGB(0, 128, 0), 0)
ecrire("choisir ", RGB(0, 0, 255), 0)
ecrire("l'animal ", RGB(255, 0, 0), 0)
ecrire("que ", RGB(255, 255, 0), 0)
ecrire("je ", RGB(0, 128, 0), 0)
ecrire("serais ", RGB(0, 0, 255), 0)
ecrire(Chr(13) + Chr(10), 0, 0)
ecrire("Je ", RGB(255, 255, 0), 0)
ecrire("choisirais ", RGB(0, 128, 0), 0)
ecrire("alors ", RGB(0, 0, 255), 0)
ecrire("l'oiseau", RGB(255, 0, 0), 0)
; fin démo
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
Menu = EventMenu()
If Event = #PB_Event_Gadget
If GadgetID = #Editor_0
ElseIf GadgetID = #Button_1 ; valider
ElseIf GadgetID = #Button_2 ; annuler
ElseIf GadgetID = #Button_3 ; aperçus
ligne = 1
OpenConsole()
For lecture = 1 To Len(GetGadgetText(#Editor_0))
Delay(50)
selectionner_caracteres(ligne, lecture, lecture+1)
CaracteristiqueSelection()
Caractere$ = Mid(GetGadgetText(#Editor_0), lecture, 1)
position_cursseur_Y_console = renvoiller_position_cursseur_Y_console()
If Sauvegarde_position_cursseur_Y_console = position_cursseur_Y_console
ElseIf Sauvegarde_position_cursseur_Y_console < position_cursseur_Y_console
If Sauvegarde_position_cursseur_Y_console > 0
PrintN("")
EndIf
Debug 1
EndIf
Sauvegarde_position_cursseur_Y_console = position_cursseur_Y_console
If CouleurTexte = RGB(0, 0, 0) ; Noir
CouleurDuTexte = 0
ElseIf CouleurTexte = RGB(0, 0, 128) ; Bleu
CouleurDuTexte = 1
ElseIf CouleurTexte = RGB(0, 128, 0) ; Vert
CouleurDuTexte = 2
ElseIf CouleurTexte = RGB(0, 128, 128) ; Cyan
CouleurDuTexte = 3
ElseIf CouleurTexte = RGB(128, 0, 0) ; Rouge
CouleurDuTexte = 4
ElseIf CouleurTexte = RGB(128, 0, 128) ; Magenta
CouleurDuTexte = 5
ElseIf CouleurTexte = RGB(128, 128, 0) ; Brun
CouleurDuTexte = 6
ElseIf CouleurTexte = RGB(192, 192, 192) ; Gris clair
CouleurDuTexte = 7
ElseIf CouleurTexte = RGB(128, 128, 128) ; Gris foncé
CouleurDuTexte = 8
ElseIf CouleurTexte = RGB(0, 0, 255) ; Bleu clair
CouleurDuTexte = 9
ElseIf CouleurTexte = RGB(0, 255, 0) ; Vert clair
CouleurDuTexte = 10
ElseIf CouleurTexte = RGB(0, 255, 255) ; Cyan clair
CouleurDuTexte = 11
ElseIf CouleurTexte = RGB(255, 0, 0) ; Rouge clair
CouleurDuTexte = 12
ElseIf CouleurTexte = RGB(255, 0, 255) ; Magenta clair
CouleurDuTexte = 13
ElseIf CouleurTexte = RGB(255, 255, 0) ; Jaune
CouleurDuTexte= 14
ElseIf CouleurTexte = RGB(255, 255, 255) ; Blanc
CouleurDuTexte = 15
EndIf
If CouleurFondTexte = RGB(0, 0, 0) ; Noir
CouleurDuFond = 0
ElseIf CouleurFondTexte = RGB(0, 0, 128) ; Bleu
CouleurDuFond = 1
ElseIf CouleurFondTexte = RGB(0, 128, 0) ; Vert
CouleurDuFond = 2
ElseIf CouleurFondTexte = RGB(0, 128, 128) ; Cyan
CouleurDuFond = 3
ElseIf CouleurFondTexte = RGB(128, 0, 0) ; Rouge
CouleurDuFond = 4
ElseIf CouleurFondTexte = RGB(128, 0, 128) ; Magenta
CouleurDuFond = 5
ElseIf CouleurFondTexte = RGB(128, 128, 0) ; Brun
CouleurDuFond = 6
ElseIf CouleurFondTexte = RGB(192, 192, 192) ; Gris clair
CouleurDuFond = 7
ElseIf CouleurFondTexte = RGB(128, 128, 128) ; Gris foncé
CouleurDuFond = 8
ElseIf CouleurFondTexte = RGB(0, 0, 255) ; Bleu clair
CouleurDuFond = 9
ElseIf CouleurFondTexte = RGB(0, 255, 0) ; Vert clair
CouleurDuFond = 10
ElseIf CouleurFondTexte = RGB(0, 255, 255) ; Cyan clair
CouleurDuFond = 11
ElseIf CouleurFondTexte = RGB(255, 0, 0) ; Rouge clair
CouleurDuFond = 12
ElseIf CouleurFondTexte = RGB(255, 0, 255) ; Magenta clair
CouleurDuFond = 13
ElseIf CouleurFondTexte = RGB(255, 255, 0) ; Jaune
CouleurDuFond = 14
ElseIf CouleurFondTexte = RGB(255, 255, 255) ; Blanc
CouleurDuFond = 15
EndIf
ConsoleColor(CouleurDuTexte, CouleurDuFond)
If Asc(Caractere$) > 31
Print(Caractere$)
EndIf
Next
EndIf
ElseIf Event = #WM_RBUTTONDOWN
CaracteristiqueSelection()
If IsMouseOverGadget(#Editor_0)
DisplayPopupMenu(#MenuPopup,WindowID(#Fentre))
EndIf
ElseIf Event = #PB_Event_Menu
Select Menu
Case 114 To 129 ; Couleur du texte
If Menu = 114 ; Noir
Couleur_police(RGB(0, 0, 0), CouleurFondTexte)
ElseIf Menu = 115 ; Bleu
Couleur_police(RGB(0, 0, 128), CouleurFondTexte)
ElseIf Menu = 116 ; Vert
Couleur_police(RGB(0, 128, 0), CouleurFondTexte)
ElseIf Menu = 117 ; Cyan
Couleur_police(RGB(0, 128, 128), CouleurFondTexte)
ElseIf Menu = 118 ; Rouge
Couleur_police(RGB(128, 0, 0), CouleurFondTexte)
ElseIf Menu = 119 ; Magenta
Couleur_police(RGB(128, 0, 128), CouleurFondTexte)
ElseIf Menu = 120 ; Brun
Couleur_police(RGB(128, 128, 0), CouleurFondTexte)
ElseIf Menu = 121 ; Gris clair
Couleur_police(RGB(192, 192, 192), CouleurFondTexte)
ElseIf Menu = 122 ; Gris foncé
Couleur_police(RGB(128, 128, 128), CouleurFondTexte)
ElseIf Menu = 123 ; Bleu clair
Couleur_police(RGB(0, 0, 255), CouleurFondTexte)
ElseIf Menu = 124 ; Vert clair
Couleur_police(RGB(0, 255, 0), CouleurFondTexte)
ElseIf Menu = 125 ; Cyan clair
Couleur_police(RGB(0, 255, 255), CouleurFondTexte)
ElseIf Menu = 126 ; Rouge clair
Couleur_police(RGB(255, 0, 0), CouleurFondTexte)
ElseIf Menu = 127 ; Magenta clair
Couleur_police(RGB(255, 0, 255), CouleurFondTexte)
ElseIf Menu = 128 ; Jaune
Couleur_police(RGB(255, 255, 0), CouleurFondTexte)
ElseIf Menu = 129 ; Blanc
Couleur_police(RGB(255, 255, 255), CouleurFondTexte)
EndIf
Case 130 To 145 ; Couleur de fond du texte
If Menu = 130 ; Noir
Couleur_police(CouleurTexte, RGB(0, 0, 0))
ElseIf Menu = 131 ; Bleu
Couleur_police(CouleurTexte, RGB(0, 0, 128))
ElseIf Menu = 132 ; Vert
Couleur_police(CouleurTexte, RGB(0, 128, 0))
ElseIf Menu = 133 ; Cyan
Couleur_police(CouleurTexte, RGB(0, 128, 128))
ElseIf Menu = 134; Rouge
Couleur_police(CouleurTexte, RGB(128, 0, 0))
ElseIf Menu = 135 ; Magenta
Couleur_police(CouleurTexte, RGB(128, 0, 128))
ElseIf Menu = 136 ; Brun
Couleur_police(CouleurTexte, RGB(128, 128, 0))
ElseIf Menu = 137 ; Gris clair
Couleur_police(CouleurTexte, RGB(192, 192, 192))
ElseIf Menu = 138 ; Gris foncé
Couleur_police(CouleurTexte, RGB(128, 128, 128))
ElseIf Menu = 139 ; Bleu clair
Couleur_police(CouleurTexte, RGB(0, 0, 255))
ElseIf Menu = 140 ; Vert clair
Couleur_police(CouleurTexte, RGB(0, 255, 0))
ElseIf Menu = 141 ; Cyan clair
Couleur_police(CouleurTexte, RGB(0, 255, 255))
ElseIf Menu = 142 ; Rouge clair
Couleur_police(CouleurTexte, RGB(255, 0, 0))
ElseIf Menu = 143 ; Magenta clair
Couleur_police(CouleurTexte, RGB(255, 0, 255))
ElseIf Menu = 144 ; Jaune
Couleur_police(CouleurTexte, RGB(255, 255, 0))
ElseIf Menu = 145 ; Blanc
Couleur_police(CouleurTexte, RGB(255, 255, 255))
EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
EndIf
EndProcedure
Open_Fentre()
; IDE Options = PureBasic 4.51 (Windows - x86)
; CursorPosition = 233
; Folding = P0
; EnableCompileCount = 46
; EnableBuildCount = 0
; EnableExeConstant
; IDE Options = PureBasic 4.51 (Windows - x86)
; CursorPosition = 471
; FirstLine = 422
; Folding = --
; EnableCompileCount = 46
; EnableBuildCount = 0
; EnableExeConstant