Le plus grand intérêt de l'EditorGadget est de pouvoir afficher des couleurs, je propose ce code qui permet de lire un fichier *.rtf ainsi que le sauvegarder dans ce même format.
Je tiens aussi à signaler que ce code n'est pas une reprise d'un quelconque code que l'on pourrait retrouver sur d'autres Forums, il est le résultat de mes propres recherches.
Code : Tout sélectionner
; PB Version 3.93
; Le 14/05/05
; Exemple de chargement et d'enregistrement au format RTF
; By Nico
Procedure EditCallBack_Ecriture(dwCookie.l, *pbBuff.l, cb.l, *pcb.l)
If WriteData(*pbBuff, cb)
ProcedureReturn 0
Else
ProcedureReturn 1
EndIf
EndProcedure
Procedure EditCallBack_Lecture(dwCookie.l, *pbBuff.l, cb.l, *pcb.l)
If ReadFile_(dwCookie, *pbBuff, cb, *pcb, 0)
ProcedureReturn 0
Else
ProcedureReturn 1
EndIf
EndProcedure
If OpenWindow(0,200,100,560,570,#PB_Window_SystemMenu,"EditorGadget") And CreateGadgetList(WindowID(0))
EditorGadget (0,10,60,540,500,#PB_Container_Raised)
ButtonGadget(2, 40, 20, 100, 20, "Ouvrir un fichier *.rtf")
ButtonGadget(1, 180, 20, 180, 20, "Enregistrer le contenu de l'éditeur")
ButtonGadget(3, 400, 20, 100, 20, "Quitter")
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_EventGadget
Select EventGadgetID()
Case 1
file$ = SaveFileRequester("Enregistrer un fichier *.rtf", "c:\","*.*|*.*", 0)
If file$<>""
If CreateFile(0, file$)
Edit.EDITSTREAM
Edit\dwCookie=0
Edit\pfnCallback=@EditCallBack_Ecriture()
SendMessage_(GadgetID(0),#EM_STREAMOUT,#SF_RTF,Edit)
If Edit\dwError=0
Debug "L'écriture s'est bien déroulée"
Else
Debug "L'écriture du fichier a provoqué une erreur"
EndIf
CloseFile(0)
EndIf
EndIf
Case 2
file$ = OpenFileRequester("Ouvrir un fichier rtf", "c:\","*.*|*.*", 0)
If file$<>""
hFile=OpenFile(1, file$)
Edit.EDITSTREAM
Edit\dwCookie=hFile
Edit\pfnCallback=@EditCallBack_Lecture()
SendMessage_(GadgetID(0),#EM_STREAMIN,#SF_RTF,Edit)
If Edit\dwError=0
Debug "La lecture s'est bien déroulée"
Else
Debug "La lecture du fichier a provoqué une erreur"
EndIf
CloseFile(1)
EndIf
Case 3
Quit=1
EndSelect
EndSelect
Until Quit=1
EndIf