Re: How to create resize box on desktop?
Posted: Sun Sep 30, 2012 4:41 pm
Hmm, it does not work on Win7 32bits? Works here on Win7 64bit.kernadec wrote:No resize on windows with windows seven : PackardBell DOTS E2 32bits
PB 4.61 & PB 5 b2
lParam for #WM_NCLBUTTONDOWN should contain the cursor position, maybe that's the reason it didn't work?
Maybe make the #BOXSIZE little bit bigger?
Code: Select all
#BOXSIZE = 8
Procedure WindowCallback(hWnd, msg, wParam, lParam)
If msg = #WM_SIZE
ww = lParam & $FFFF
wh = (lParam >> 16) & $FFFF
ResizeGadget(0,0,0,#BOXSIZE,#BOXSIZE)
ResizeGadget(1,ww/2-#BOXSIZE/2,0,#BOXSIZE,#BOXSIZE)
ResizeGadget(2,ww-#BOXSIZE,0,#BOXSIZE,#BOXSIZE)
ResizeGadget(3,ww-#BOXSIZE,wh/2-#BOXSIZE/2,#BOXSIZE,#BOXSIZE)
ResizeGadget(4,ww-#BOXSIZE,wh-#BOXSIZE,#BOXSIZE,#BOXSIZE)
ResizeGadget(5,ww/2-#BOXSIZE/2,wh-#BOXSIZE,#BOXSIZE,#BOXSIZE)
ResizeGadget(6,0,wh-#BOXSIZE,#BOXSIZE,#BOXSIZE)
ResizeGadget(7,0,wh/2-#BOXSIZE/2,#BOXSIZE,#BOXSIZE)
;ProcedureReturn 0
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(0,0,0,512,512,"",#PB_Window_ScreenCentered|#PB_Window_BorderLess)
StickyWindow(0,#True)
SetWindowColor(0, RGB(0,100,255)) ; RGB(120,120,120)
SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE,GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE)|#WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(0), RGB(100,0,0), 120, #LWA_ALPHA)
CreatePopupMenu(0)
MenuItem(1, "Quit")
MenuItem(2, "Cancel")
SetClassLongPtr_(WindowID(0), #GCL_HCURSOR, LoadCursor_(0, #IDC_SIZEALL))
wh = WindowHeight(0)
ww = WindowWidth(0)
CanvasGadget(0,0,0,#BOXSIZE,#BOXSIZE)
SetGadgetAttribute(0,#PB_Canvas_Cursor,#PB_Cursor_LeftUpRightDown)
CanvasGadget(1,ww/2-#BOXSIZE/2,0,#BOXSIZE,#BOXSIZE)
SetGadgetAttribute(1,#PB_Canvas_Cursor,#PB_Cursor_UpDown)
CanvasGadget(2,ww-#BOXSIZE,0,#BOXSIZE,#BOXSIZE)
SetGadgetAttribute(2,#PB_Canvas_Cursor,#PB_Cursor_LeftDownRightUp)
CanvasGadget(3,ww-#BOXSIZE,wh/2-#BOXSIZE/2,#BOXSIZE,#BOXSIZE)
SetGadgetAttribute(3,#PB_Canvas_Cursor,#PB_Cursor_LeftRight)
CanvasGadget(4,ww-#BOXSIZE,wh-#BOXSIZE,#BOXSIZE,#BOXSIZE)
SetGadgetAttribute(4,#PB_Canvas_Cursor,#PB_Cursor_LeftUpRightDown)
CanvasGadget(5,ww/2-#BOXSIZE/2,wh-#BOXSIZE,#BOXSIZE,#BOXSIZE)
SetGadgetAttribute(5,#PB_Canvas_Cursor,#PB_Cursor_UpDown)
CanvasGadget(6,0,wh-#BOXSIZE,#BOXSIZE,#BOXSIZE)
SetGadgetAttribute(6,#PB_Canvas_Cursor,#PB_Cursor_LeftDownRightUp)
CanvasGadget(7,0,wh/2-#BOXSIZE/2,#BOXSIZE,#BOXSIZE)
SetGadgetAttribute(7,#PB_Canvas_Cursor,#PB_Cursor_LeftRight)
SetWindowCallback(@WindowCallback())
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #WM_LBUTTONDOWN
GetCursorPos_(@pt.POINT)
cursor = (pt\x << 16) | pt\y
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, cursor)
Case #WM_RBUTTONUP
DisplayPopupMenu(0, WindowID(0))
Case #PB_Event_Menu
Select EventMenu()
Case 1
End
EndSelect
Case #PB_Event_Gadget
If EventGadget() >= 0 And EventGadget() <= 7 And EventType()=#PB_EventType_LeftButtonDown
GetCursorPos_(@pt.POINT)
cursor = (pt\x << 16) | pt\y
Select EventGadget()
Case 0: SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTTOPLEFT , cursor)
Case 1: SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTTOP , cursor)
Case 2: SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTTOPRIGHT , cursor)
Case 3: SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTRIGHT , cursor)
Case 4: SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTBOTTOMRIGHT , cursor)
Case 5: SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTBOTTOM , cursor)
Case 6: SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTBOTTOMLEFT , cursor)
Case 7: SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTLEFT , cursor)
EndSelect
EndIf
EndSelect
Until EventID = #PB_Event_CloseWindow