And if you want to actually suspend main window-related execution you'll need to structure your primary loop appropriately. Example:
SuperStrict
Local window:TGadget = CreateWindow("Main Window",50, 50, 240, 240)
Local button:TGadget = CreateButton("Click Me", 5, 5, 100, 50, window)
Local label:TGadget = CreateLabel("0", 5, 60, 100, 50, window)
Local modal:TGadget = CreateWindow("Modal Window",50, 50, 200, 200, window, WINDOW_TITLEBAR | WINDOW_HIDDEN)
Local timer:TTimer = CreateTimer(1)
Local oldtime:Int = 0
Local value:Int = 0
Local DoMainWindowStuff:Int = True
Repeat
PollEvent
Select EventID()
Case EVENT_WINDOWCLOSE
If EventSource() = window Then End
If EventSource() = modal
EnableGadget button
EnableGadget window
DoMainWindowStuff = True
HideGadget modal
EndIf
Case EVENT_GADGETACTION
DoMainWindowStuff = False
DisableGadget button
DisableGadget window
ShowGadget modal
End Select
If DoMainWindowStuff
Local t:Int = TimerTicks(timer)
If t > oldtime
oldtime = t
value :+ 1
If value > 1000 Then value = 0
SetGadgetText(label, value)
EndIf
EndIf
Forever