Schatten für Gadgets
Verfasst: 07.01.2007 20:40
Vielleicht kann's ja jemand gebrauchen .
Code: Alles auswählen
;####################################
; Gadgets mit Schatten versehen
; Author : Andreas Januar 2007
;####################################
Enumeration
;Windows
#Main
;ButtonGadgets
#Button1
;EditorGadgets
#Editor1
;CalendarGadgets
#Calender1
;TextGedgets
#Text1
;TextBorder
#Text2
;Dategadgets
#Date1
EndEnumeration
Procedure ShadowProc(wnd,lparam)
;TextGadgets ausnehmen
If (GetDlgCtrlID_(wnd) < #Text1) Or (GetDlgCtrlID_(wnd) >= #Text2)
Protected x.l,y.l,w.l,h.l
Brush = GetStockObject_(#DKGRAY_BRUSH)
Pen = GetStockObject_(#NULL_PEN)
OldBrush = SelectObject_(lParam,Brush)
OldPen = SelectObject_(lParam,Pen)
x = GadgetX(GetDlgCtrlID_(wnd))+6
y = GadgetY(GetDlgCtrlID_(wnd))+6
w = GadgetX(GetDlgCtrlID_(wnd))+6+GadgetWidth(GetDlgCtrlID_(wnd))
h = GadgetY(GetDlgCtrlID_(wnd))+6+GadgetHeight(GetDlgCtrlID_(wnd))
OldBrush = SelectObject_(lParam,Brush)
Rectangle_(lParam,x,y,w,h)
SelectObject_(lParam,OldBrush)
SelectObject_(lParam,OldPen)
DeleteObject_(Brush)
DeleteObject_(Pen)
EndIf
ProcedureReturn #True
EndProcedure
Procedure WCB(wnd,msg,wparam,lparam)
Shared FullDrag.l
Result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_NCHITTEST
Case #WM_PAINT
BeginPaint_(wnd,ps.PAINTSTRUCT)
EnumChildWindows_(wnd,@ShadowProc(),ps\hdc)
EndPaint_(wnd,ps.PAINTSTRUCT)
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(#Main, 100, 200, 400, 420, "Mein Fenster",#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)
If CreateGadgetList(WindowID(0))
ButtonGadget(#Button1, 10,10,80,24,"Ende")
EditorGadget(#Editor1, 10,50,300,100)
CalendarGadget(#Calender1, 10, 170,200,180)
TextGadget(#Text1,10,370,350,30,"Sieht nicht gut aus mit Schatten, darum werden TextGadgets ohne Rand nicht behandelt")
TextGadget(#Text2,260,190,100,16,FormatDate("%dd.%mm.%yyyy %hh:%ii", Date()),#SS_CENTER|#WS_BORDER)
DateGadget(#Date1, 100, 10, 180, 25, "Datum: %dd/%mm/%yyyy Zeit: %hh:%ii")
EndIf
SetWindowCallback(@WCB())
InvalidateRect_(WindowID(0),0,0)
SetForegroundWindow_(WindowID(#Main))
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case 1
SendMessage_(WindowID(0),#WM_CLOSE,0,0)
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
End