Save and sound

PB 5.61 x86 Windows 10 x64
Code: Select all
#LB_ITEMFROMPOINT = $1A9
Global Sel
Procedure WndProc(hwnd, uMsg, wParam, lParam)
result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_NCACTIVATE
Result = 1
Case #WM_SIZE,#WM_MOVE
If Sel = 1
ResizeWindow(1,GadgetX(0,#PB_Gadget_ScreenCoordinate), GadgetY(0,#PB_Gadget_ScreenCoordinate), GadgetWidth(0), GadgetHeight(0))
Else
ResizeWindow(1,0,0,0,0)
EndIf
EndSelect
ProcedureReturn result
EndProcedure
LoadFont(0,"Georgia",12)
OpenWindow(0, 0, 0, 600, 400, "ListViewGadget",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0, 10, 10, 580, 320,#PB_ListView_MultiSelect)
SetGadgetFont(0,FontID(0))
ButtonGadget(1, 10, 360, 150, 25, "Disable Multiselection")
For i = 1 To 12
AddGadgetItem (0, -1, "Item " + Str(i) + " of the ListView")
Next
OpenWindow(1, 0,0,0,0, "",#PB_Window_BorderLess ,WindowID(0))
SetWindowLongPtr_(WindowID(1),#GWL_EXSTYLE, GetWindowLongPtr_(WindowID(1),#GWL_EXSTYLE)|#WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(1),$FFFFFF,5,#LWA_ALPHA)
SetActiveWindow(0)
SetWindowCallback(@WndProc())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #WM_LBUTTONDOWN
If Sel = 1
GetCursorPos_(@p.POINT)
ScreenToClient_ (GadgetID(0), @p)
item = SendMessage_(GadgetID(0),#LB_ITEMFROMPOINT,0,p\y<<16+p\x)
SetGadgetState(0,-1)
SetGadgetItemState(0,item,1)
EndIf
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Sel ! 1
If Sel = 1
SetGadgetText(1,"Enable Multiselection")
SetGadgetState(0,-1)
ResizeWindow(1,GadgetX(0,#PB_Gadget_ScreenCoordinate), GadgetY(0,#PB_Gadget_ScreenCoordinate), GadgetWidth(0), GadgetHeight(0))
Else
SetGadgetText(1,"Disable Multiselection")
ResizeWindow(1,0,0,0,0)
EndIf
EndSelect
EndSelect
Until Quit = 1