OK, got something. Here's an example of coloring all elements of the checkbox including background, text, box background and checkmark:
Code: Select all
;====================================================
; Program: CheckBox Colors Demo
; Author: netmaestro
; Date: November 29, 2006
;====================================================
Global GadgetBkg = CreateSolidBrush_(#Green)
Global BoxBkg = CreateSolidBrush_(#Yellow)
Global Checkcolor = #Blue
Global Textcolor = #Red
Global NullPen = CreatePen_(#PS_NULL, 0, 0)
Procedure GadgetProc(hwnd, msg, wparam, lparam)
Shared oldproc
result = CallWindowProc_(oldproc, hwnd, msg, wparam, lparam)
Select msg
Case #WM_PAINT, #WM_LBUTTONUP, #WM_LBUTTONDOWN
dc = GetDC_(hwnd)
SelectObject_(dc, BoxBkg)
SelectObject_(dc, NullPen)
Rectangle_(dc,2,5,12,15)
If GetGadgetState(GetDlgCtrlID_(hwnd))
Restore check
For i = 1 To 21
Read x
Read y
SetPixel_(dc,x+2,y+5, CheckColor)
Next
EndIf
ReleaseDC_(hwnd, dc);
EndSelect
ProcedureReturn result
EndProcedure
Procedure WindowProc(hWnd, Msg, wParam, lParam)
result = #PB_ProcessPureBasicEvents
If Msg=#WM_CTLCOLORSTATIC
If GetDlgCtrlID_(lparam) = 1
SetBkMode_(wParam,#TRANSPARENT)
SetTextColor_(wParam, Textcolor)
result = GadgetBkg
EndIf
EndIf
ProcedureReturn result
EndProcedure
OpenWindow(0,0,0,260,160,"test",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
SetWindowCallback(@WindowProc())
CheckBoxGadget(1,10,20,245,20,"Checkbox gadget with a green background")
oldproc = SetWindowLong_(GadgetID(1),#GWL_WNDPROC,@GadgetProc())
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
DeleteObject_(GadgetBkg)
DeleteObject_(BoxBkg)
DeleteObject_(NullPen)
DataSection
check:
Data.i 7,1,6,2,7,2,1,3,5,3,6,3,7,3,1,4,2,4,4,4,5,4,6,4,1,5,2,5,3,5,4,5,5,5,2,6,3,6,4,6,3,7
EndDataSection