Perhaps you will be interested in my experiments. I did them when I wrote the
.
Code: Select all
; Base Rashad : https://www.purebasic.fr/english/viewtopic.php?p=360438#p360438
EnableExplicit
Global BBrush,TBrush, hBrush, RBrush, hPen, hFont
Global hIcon
; ExtractIconEx_("C:\WINDOWS\System32\Shell32.dll", 3, @hIcon, 0, 1)
ExtractIconEx_("C:\WINDOWS\System32\Shell32.dll", 3, 0, @hIcon, 1)
hPen = CreatePen_(#PS_SOLID, 4, $8080ff)
hFont = CreateFont_(18, 0, 0, 0, 400, 0, 0, 0,
#DEFAULT_CHARSET, #OUT_DEFAULT_PRECIS, #CLIP_DEFAULT_PRECIS, #DEFAULT_QUALITY, 0, "Arial")
BBrush = CreateSolidBrush_($222222)
TBrush = CreateSolidBrush_($eeeeee)
hBrush = CreateSolidBrush_($666600)
RBrush = CreateSolidBrush_($8080ff)
Procedure WCB(hWnd,uMsg,wParam,lParam)
Protected *cb.DRAWITEMSTRUCT, circle
Select uMsg
Case #WM_DRAWITEM
*cb.DRAWITEMSTRUCT = lParam
SetBkMode_(*cb\hDC,#TRANSPARENT)
If *cb\itemState & #ODS_SELECTED
SelectObject_(*cb\hDC,BBrush)
SetTextColor_(*cb\hDC,$8080ff)
Else
SelectObject_(*cb\hDC,TBrush)
SetTextColor_(*cb\hDC,$0)
EndIf
SelectObject_(*cb\hDC, hFont)
FillRect_(*cb\hDC, *cb\rcItem, TBrush)
; SelectObject_(*cb\hDC,RBrush)
FrameRect_(*cb\hDC, *cb\rcItem, RBrush)
; DrawFrameControl_(*cb\hDC, *cb\rcItem, #DFC_BUTTON, #DFCS_BUTTONPUSH)
; DrawEdge_(*cb\hDC, *cb\rcItem, #EDGE_BUMP, #BF_RECT)
circle = 0 ; если 0 то квадратная
; RoundRect_(*cb\hDC,0,0,*cb\rcItem\right,*cb\rcItem\bottom,circle,circle)
; RoundRect_(*cb\hDC,1,1,*cb\rcItem\right-1,*cb\rcItem\bottom-1,circle,circle)
DrawText_(*cb\hDC,GetGadgetText(*cb\CtlID),-1,*cb\rcItem,#DT_CENTER | #DT_VCENTER | #DT_SINGLELINE)
DrawIconEx_(*cb\hDC, 9, 9, hicon,16,16,0,0,#DI_NORMAL)
ProcedureReturn 0
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(0,0,0,400,200,"Test",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
; SetWindowColor(0, $666600)
ButtonGadget(0,10,45,130,35,"Button 1",#BS_OWNERDRAW)
ButtonGadget(1,10,85,130,35,"Button 2",#BS_OWNERDRAW)
; ButtonGadget(2,10,125,130,35,"Button 3")
; SetClassLongPtr_(GadgetID(0),#GCL_STYLE,GetClassLongPtr_(GadgetID(0),#GCL_STYLE) | #CS_DBLCLKS)
; SetClassLongPtr_(GadgetID(1),#GCL_STYLE,GetClassLongPtr_(GadgetID(1),#GCL_STYLE) | #CS_DBLCLKS)
SetWindowCallback(@WCB())
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 0
; MessageRequester("", GetGadgetText(0))
SetWindowTitle(0 , GetGadgetText(0))
Case 1
; MessageRequester("", GetGadgetText(1))
SetWindowTitle(0 , GetGadgetText(1))
EndSelect
Case #PB_Event_CloseWindow
DeleteObject_(BBrush)
DeleteObject_(TBrush)
DeleteObject_(hBrush)
DeleteObject_(hFont)
DeleteObject_(hPen)
DeleteObject_(RBrush)
CloseWindow(0)
DestroyIcon_(hicon)
End
EndSelect
ForEver