J'utilise plusieurs fenêtres skinnées et avec des gadgets skinnés également.
J'utilise donc un WindowCallBack() pour réafficher tout celà.
Or le pb est est que lorsque j'utilise la fonction Point() dans cette fct, elle prend la couleur du point de la fenêtre principale et non pas de la fenêtre concernée. Donc les couleurs affichées par mon WinCB() sont fausses.
Voilà un aperçu de cette fameuse fct :
Code : Tout sélectionner
;{--
;- Window CallBack()
Procedure WindowCallback(WindowID,Message,wParam,lParam)
Protected id.l
result = #PB_ProcessPureBasicEvents
id = GetDlgCtrlID_(lParam)
Select Message
;{-- Les gadgets simples
Case #WM_CTLCOLORSTATIC
Select lParam
Case GadgetID(#BUTTON_LABEL)
Case GadgetID(#BUTTON_PL_TITLE)
Case GadgetID(#BUTTON_SK_TITLE)
Default
ProcedureReturn result
EndSelect
StartDrawing(ImageOutput())
SelectElement(mesBt(), id)
;UseWindow(mesBt()\win)
;ActivateWindow()
result = CreateSolidBrush_(Point(GadgetX(id), GadgetY(id)))
SetBkColor_(wParam, Point(GadgetX(id), GadgetY(id)) )
SetTextColor_(wParam, textColor)
StopDrawing()
; --}
;{-- Les listes déroulantes
Case #WM_CTLCOLORLISTBOX
Select lParam
Case GadgetID(#BUTTON_SK_LISTE)
Case GadgetID(#BUTTON_PL_LISTE)
Default
ProcedureReturn result
EndSelect
SetBkMode_(wParam,#TRANSPARENT)
SetTextColor_(wParam,textColor)
StartDrawing(ImageOutput())
result = CreateSolidBrush_(Point(GadgetX(id), GadgetY(id)))
StopDrawing()
; --}
EndSelect
ProcedureReturn result
EndProcedure
; --}
