Verfasst: 17.09.2008 23:17
So vielleicht?
Oder soll auch die grafische Aktualisierung bei einem einfachen Klick unterbunden werden?
Code: Alles auswählen
#MCM_HITTEST = #MCM_FIRST + 14
#MCHT_CALENDAR = $20000
#MCHT_CALENDARDATE = #MCHT_CALENDAR | $0001
Structure MCHITTESTINFO
cbSize.l
pt.POINT
uHIt.l
st.SYSTEMTIME
EndStructure
Global lpPrevFunc
Procedure ChildSubProc(hWnd,uMsg,wParam,lParam)
Select uMsg
Case #WM_LBUTTONDBLCLK
mcht.MCHITTESTINFO\cbSize = SizeOf(MCHITTESTINFO)
mcht\pt\x = DesktopMouseX()
mcht\pt\y = DesktopMouseY()
ScreenToClient_(GadgetID(0), @mcht\pt)
SendMessage_(GadgetID(0),#MCM_HITTEST,0,mcht)
If mcht\uHit = #MCHT_CALENDARDATE
Debug "Du hast auf den " + FormatDate("%dd.%mm.%yyyy",GetGadgetState(0)) + " geklickt."
EndIf
EndSelect
ProcedureReturn CallWindowProc_(lpPrevFunc,hWnd,uMsg,wParam,lParam)
EndProcedure
OpenWindow(0,0,0,300,300,"CalendarGadget Hit Test",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
CalendarGadget(0,50,20,200,180)
lpPrevFunc = SetWindowLong_(GadgetID(0),#GWL_WNDPROC,@ChildSubProc())
SetClassLong_(GadgetID(0),#GCL_STYLE,GetClassLong_(GadgetID(0),#GCL_STYLE) | #CS_DBLCLKS)
While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend