Code: Select all
#MCN_SELECT = #MCN_FIRST + 4
Global gOldProc, gBlnSelected
Procedure calProc(hWnd, uMsg, wParam, lParam)
Protected result, selDate
Static dateBeforeClick, dateAfterClick
Select uMsg
Case #WM_LBUTTONDBLCLK
result = CallWindowProc_(gOldProc, hWnd, uMsg, wParam, lParam)
If gBlnSelected
selDate = GetGadgetState(0)
Debug "New date selected through double-click : " + FormatDate("%dd/%mm/%yyyy", selDate)
gBlnSelected = #False
EndIf
Default
result = CallWindowProc_(gOldProc, hWnd, uMsg, wParam, lParam)
EndSelect
ProcedureReturn result
EndProcedure
Procedure WinCallback(hwnd, msg, wparam, lparam)
Protected result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_NOTIFY
*pnmh.NMHDR = lparam
If *pnmh\hwndFrom = GadgetID(0)
Select *pnmh\code
Case #MCN_SELECT
gBlnSelected = #True
EndSelect
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0, 0, 0, 220, 280, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CalendarGadget(0, 10, 10, 200, 180)
SetClassLong_(GadgetID(0), #GCL_STYLE, GetClassLong_(GadgetID(0), #GCL_STYLE)!#CS_DBLCLKS)
gOldProc = SetWindowLong_(GadgetID(0), #GWL_WNDPROC, @calProc())
SetWindowCallback(@WinCallback())
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
EndIf