EditorGadget flickering with custom selection color (Win)

Just starting out? Need help? Post your questions and find answers here.
firace
Addict
Addict
Posts: 902
Joined: Wed Nov 09, 2011 8:58 am

EditorGadget flickering with custom selection color (Win)

Post by firace »

This code by Fluid byte works fine except for some heavy flickering while text is being selected. Any suggestions for fixing it?

Code: Select all

#CFM_BACKCOLOR = $4000000

Global lpPrevFunc
Global hwndRichEdit

OpenWindow(0,0,0,500,400,"Owner-Draw Text Selection")

hwndRichEdit = EditorGadget(0,0,0,WindowWidth(0),WindowHeight(0))

For i=1 To 30
  AddGadgetItem(0,-1,"Lorem ipsum dolor sit ipsum dolor sit am vinci clares itams semper cals petre" )
Next


Procedure WindowProc(hwnd,uMsg,wParam,lParam)
  Select uMsg
    Case #WM_LBUTTONDOWN
      
      cf.CHARFORMAT2
      cf\cbSize = SizeOf(CHARFORMAT2)
      cf\dwMask = #CFM_COLOR | #CFM_BACKCOLOR
      cf\crTextColor = #Black
      cf\crBackColor = #White
      
      SendMessage_(hwndRichEdit,#EM_SETCHARFORMAT,#SCF_ALL,cf)
      
    Case #WM_MOUSEMOVE
      
      If wParam = #MK_LBUTTON
        SendMessage_(hwndRichEdit,#EM_HIDESELECTION,1,0)
        
        
        cf.CHARFORMAT2
        cf\cbSize = SizeOf(CHARFORMAT2)
        cf\dwMask = #CFM_COLOR | #CFM_BACKCOLOR
        
        cf\crTextColor = #Black
        cf\crBackColor = #White
        SendMessage_(hwndRichEdit,#EM_SETCHARFORMAT,#SCF_ALL,cf)   
        
        cf\crTextColor = #Black
        cf\crBackColor = #Yellow
        SendMessage_(hwndRichEdit,#EM_SETCHARFORMAT,#SCF_SELECTION,cf)   
        
;         SendMessage_(GadgetID(0), #WM_SETREDRAW, 1,0)
;         InvalidateRect_(GadgetID(0),0,0)
        
      EndIf
      
      
  EndSelect
  
  ProcedureReturn CallWindowProc_(lpPrevFunc,hwnd,uMsg,wParam,lParam)
EndProcedure

lpPrevFunc = SetWindowLong_(hwndRichEdit,#GWL_WNDPROC,@WindowProc())


Repeat : Until WaitWindowEvent() = 13116