Procedure WinCallback(hWnd, uMsg, wParam, lParam)
Protected Result = #PB_ProcessPureBasicEvents
If uMsg = #WM_QUERYENDSESSION
MessageRequester("","#WM_QUERYENDSESSION")
Result = #True
ElseIf uMsg = #WM_ENDSESSION
MessageRequester("","#WM_ENDSESSION")
Result = 0
EndIf
ProcedureReturn Result
EndProcedure
OpenWindow(0, 0, 0, 200, 100, "Messages", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
SetWindowCallback(@WinCallback()) ; activate the callback
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow