Code: Select all
Global Maxx,WX,WY,WW,WH
Procedure WndProc(hwnd, uMsg, wParam, lParam)
result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_SIZE,#WM_MOVE
ResizeGadget(0,#PB_Ignore,WindowHeight(0)-50,#PB_Ignore,#PB_Ignore)
Case #WM_SETTINGCHANGE;,#WM_PAINT
If Maxx = 1
SystemParametersInfo_(#SPI_GETWORKAREA, 0, r.RECT, 0)
MoveWindow_(WindowID(0),r\left,r\top,r\right-r\left,r\bottom-r\top,1)
ElseIf Maxx = 2
MoveWindow_(WindowID(0),WX,WY,WW,WH,1)
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow (0,0,0,400,300, "Borderless Window" , #PB_Window_BorderLess|#PB_Window_ScreenCentered )
SetWindowColor(0,$A0EFF9)
ContainerGadget(0,10,255,120,40)
SetGadgetColor(0,#PB_Gadget_BackColor,$A0EFF9)
ButtonGadget(1,0,0,60,20,"Max")
ButtonGadget(2,0,20,60,20,"Restore")
ButtonGadget(3,60,20,60,20,"Quit")
CloseGadgetList()
SetWindowCallback(@WndProc())
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Maxx = 1
WX = WindowX(0)
WY = WindowY(0)
WW = WindowWidth(0)
WH = WindowHeight(0)
SystemParametersInfo_(#SPI_GETWORKAREA,0,r.RECT,0)
MoveWindow_(WindowID(0),r\left,r\top,r\right-r\left,r\bottom-r\top,1)
Case 2
Maxx = 2
MoveWindow_(WindowID(0),WX,WY,WW,WH,1)
Case 3
Quit = 1
EndSelect
Case #WM_LBUTTONDOWN
GetCursorPos_ (p.POINT)
If WindowFromPoint_(p\y << 32 + p\x) = WindowID(0)
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndIf
EndSelect
Until Quit = 1
EndIf