API and Coloration of a part of text

Windows specific forum
User avatar
Progi1984
Addict
Addict
Posts: 806
Joined: Fri Feb 25, 2005 1:01 am
Location: France > Rennes
Contact:

API and Coloration of a part of text

Post by Progi1984 »

Hello, I'm french.

I want to colorize some text But I want to use buffers, because now I use the highlighting.
I arrived here , thanks to Cederavic.

Code: Select all

ProcedureDLL Editor_ColorTest(Gadget,ydeb,xdeb,yfin,xfin,Color)
  ; Set the Text color for the Selection
  ; in RGB format
  format.CHARFORMAT
  format\cbSize = SizeOf(CHARFORMAT)
  format\dwMask = #CFM_COLOR
  format\crTextColor = Color
 
  sel.CHARRANGE
  ; we get the old sélection
  oldsel.CHARRANGE
  SendMessage_(GadgetID(Gadget), #EM_GETSEL, @oldsel\cpMin, @oldsel\cpMax)
  sel\cpMin = SendMessage_(GadgetID(Gadget), #EM_LINEINDEX, ydeb, 0) + xdeb - 1
 
   If yfin = -1
     yfin = SendMessage_(GadgetID(Gadget), #EM_GETLINECOUNT, 0, 0)-1
   EndIf
  sel\cpMax =SendMessage_(GadgetID(Gadget), #EM_LINEINDEX, yfin, 0)
 
   If xfin = -1
     sel\cpMax + SendMessage_(GadgetID(Gadget), #EM_LINELENGTH, sel\cpMax, 0)
   Else
     sel\cpMax + xfin - 1
   EndIf
 
  ; we select the text that we want to colorize
  SendMessage_(GadgetID(Gadget), #EM_SETSEL, sel\cpMin, sel\cpMax)
  ; wParam wait for the formatting mode, and not the position
  SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION,@format)
  ; we replace the selection where it was
  SendMessage_(GadgetID(Gadget), #EM_SETSEL, oldsel\cpMin, oldsel\cpMax)
EndProcedure

If OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"EditorGadget") And CreateGadgetList(WindowID(0))
    EditorGadget (30,8,8,400,500,#PB_Container_Raised)
    For a=0 To 5
      AddGadgetItem(30,a,"Line "+Str(a))
    Next

    ButtonGadget(2,610,10,150,50,"Change the COlor of the Text",#PB_Button_MultiLine)


    Repeat
      EventID = WaitWindowEvent()
      If EventID = #PB_EventGadget   
        Select EventGadgetID()
          Case 2
            rgb=RGB(Random(255),Random(255),Random(255))
            Editor_ColorTest(30,2,1,3,5,rgb)
            SetGadgetText(2,"Text (RGB) : "+Str(Red(rgb))+","+Str(Green(rgb))+","+Str(Blue(rgb)))
        EndSelect
      EndIf

   Until EventID=#PB_Event_CloseWindow
End
 EndIf