$INCLUDE "windowssdk.inc" '================================ ' ' ' Control move example by Andy. ' ' ' '================================ ' How to use: ' ' Functions are: ' MoveControlUp ' MoveControlDwon ' MoveControlLeft ' MoveControlRight ' Paramters: ' Window,Control,Amount to move e.g. MoveControlUp(w1,1,20) WINDOW w1 int WinAcross = 500 int WinDown = 400 int Top = 10 int Bottom = WinDown 'OPENWINDOW w1,0,0,WinAcross,WinDown,@MINBOX|@MAXBOX|@SIZE|@CAPTION,0,"Window",&handler OPENWINDOW w1,0,0,WinAcross,WinDown,@MINBOX|@MAXBOX|@CAPTION,0,"Window",&handler CONTROL w1,@BUTTON,"Button",200,150,150,25,0,1 WAITUNTIL IsWindowClosed(w1) SUB handler(),INT SELECT @MESSAGE CASE @IDCREATE CENTERWINDOW w1 CASE @IDCLOSEWINDOW CLOSEWINDOW w1 CASE @IDCONTROL SELECT @CONTROLID ENDSELECT case @IDKEYDOWN select @CODE case 38 'UP MoveControlUp(w1,1,20) ' 20 = amount of movement CASE 40 'Down MoveControlDown(w1,1,20) case 39 'Right MoveControlRight(w1,1,20) case 37 'Left MoveControlLeft(w1,1,20) endselect ENDSELECT RETURN 0 ENDSUB sub MoveControlUp(window WinIn,int ControlIn,int MovementIn) CONST WS_THICKFRAME = 0x40000 CONST WS_SIZEBOX = (WS_THICKFRAME) int MOwl, MOwt, Moww, Mowh int MOl, MOt, MOw, MOh GETSIZE WinIn, MOwl, MOwt, Moww, Mowh GETSIZE WinIn, MOl, MOt, MOw, MOh,ControlIn dword style = GetWindowLongA(WinIn.hWnd,GWL_STYLE) if style & WS_SIZEBOX if (MOt-MOwt-30)-MovementIn = 0 then return 0 if (MOt-MOwt-30)-MovementIn <= 0 setsize WinIn,(MOl-MOwl-GetSystemMetrics(32)),0,MOw,MOh,ControlIn 'Up else setsize WinIn,(MOl-MOwl-GetSystemMetrics(32)),(MOt-MOwt-30)-MovementIn,MOw,MOh,ControlIn 'Up endif else int DownDiff = 30 - (GetSystemMetrics(32) - GetSystemMetrics(7)) if (MOt-MOwt-DownDiff)-MovementIn = 0 then return 0 if (MOt-MOwt-DownDiff)-MovementIn <= 0 setsize WinIn,(MOl-MOwl-GetSystemMetrics(7)),0,MOw,MOh,ControlIn 'Up else setsize WinIn,(MOl-MOwl-GetSystemMetrics(7)),(MOt-MOwt-DownDiff)-MovementIn,MOw,MOh,ControlIn 'Up endif endif return endsub sub MoveControlDown(window WinIn,int ControlIn,int MovementIn) CONST WS_THICKFRAME = 0x40000 CONST WS_SIZEBOX = (WS_THICKFRAME) int MOwl, MOwt, Moww, Mowh int MOl, MOt, MOw, MOh GETSIZE WinIn, MOwl, MOwt, Moww, Mowh GETSIZE WinIn, MOl, MOt, MOw, MOh,ControlIn dword style = GetWindowLongA(WinIn.hWnd,GWL_STYLE) if style & WS_SIZEBOX int BottomV = MOwh - GetSystemMetrics(4) - MOh - (GetSystemMetrics(33)*2) - (GetSystemMetrics(6)*2) + 2 if (MOt-MOwt-30)+MovementIn >= BottomV setsize WinIn,(MOl-MOwl-GetSystemMetrics(32)),BottomV,MOw,MOh,ControlIn 'Down else setsize WinIn,(MOl-MOwl-GetSystemMetrics(32)),(MOt-MOwt-30)+MovementIn,MOw,MOh,ControlIn 'Down endif else int DownDiff = 30 - (GetSystemMetrics(32) - GetSystemMetrics(7)) BottomV = MOwh - GetSystemMetrics(4) - MOh - (GetSystemMetrics(8)*2) - (GetSystemMetrics(6)*2) + 2 if (MOt-MOwt-DownDiff)+MovementIn >= BottomV setsize WinIn,(MOl-MOwl-GetSystemMetrics(7)),BottomV,MOw,MOh,ControlIn 'Down else setsize WinIn,(MOl-MOwl-GetSystemMetrics(7)),(MOt-MOwt-DownDiff)+MovementIn,MOw,MOh,ControlIn 'Down endif endif return endsub sub MoveControlLeft(window WinIn,int ControlIn,int MovementIn) CONST WS_THICKFRAME = 0x40000 CONST WS_SIZEBOX = (WS_THICKFRAME) int AdjustH = GetSystemMetrics(4) - 22 int MOwl, MOwt, Moww, Mowh int MOl, MOt, MOw, MOh GETSIZE WinIn, MOwl, MOwt, Moww, Mowh GETSIZE WinIn, MOl, MOt, MOw, MOh,ControlIn dword style = GetWindowLongA(WinIn.hWnd,GWL_STYLE) if style & WS_SIZEBOX if (MOl-MOwl-GetSystemMetrics(32))-MovementIn <= 0 setsize WinIn,0,(MOt-MOwt-30)-AdjustH,MOw,MOh,ControlIn 'Left else setsize WinIn,(MOl-MOwl-GetSystemMetrics(32))-MovementIn,(MOt-MOwt-30)-AdjustH,MOw,MOh,ControlIn 'Left endif else int DownDiff = 30 - (GetSystemMetrics(32) - GetSystemMetrics(7)) GETSIZE WinIn, MOwl, MOwt, Moww, Mowh GETSIZE WinIn, MOl, MOt, MOw, MOh,ControlIn if (MOl-MOwl-GetSystemMetrics(32))-MovementIn <= 0 setsize WinIn,0,(MOt-MOwt-DownDiff)-AdjustH,MOw,MOh,ControlIn 'Left else setsize WinIn,(MOl-MOwl-GetSystemMetrics(32))-MovementIn,(MOt-MOwt-DownDiff)-AdjustH,MOw,MOh,ControlIn 'Left endif endif return endsub sub MoveControlRight(window WinIn,int ControlIn,int MovementIn) CONST WS_THICKFRAME = 0x40000 CONST WS_SIZEBOX = (WS_THICKFRAME) int AdjustH = GetSystemMetrics(4) - 22 int MOwl, MOwt, Moww, Mowh int MOl, MOt, MOw, MOh GETSIZE WinIn, MOwl, MOwt, Moww, Mowh GETSIZE WinIn, MOl, MOt, MOw, MOh,ControlIn dword style = GetWindowLongA(WinIn.hWnd,GWL_STYLE) if style & WS_SIZEBOX int RightV = MOww - MOw - (GetSystemMetrics(5)*2) - (GetSystemMetrics(32)*2) + 2 if (MOl-MOwl-GetSystemMetrics(32))+MovementIn >= RightV setsize WinIn,RightV,(MOt-MOwt-30)-AdjustH,MOw,MOh,ControlIn 'Right else setsize WinIn,(MOl-MOwl-GetSystemMetrics(32))+MovementIn,(MOt-MOwt-30)-AdjustH,MOw,MOh,ControlIn 'Right endif else int DownDiff = 30 - (GetSystemMetrics(32) - GetSystemMetrics(7)) RightV = MOww - MOw - (GetSystemMetrics(5)*2) - (GetSystemMetrics(7)*2) + 2 if (MOl-MOwl-GetSystemMetrics(32))+MovementIn >= RightV setsize WinIn,RightV,(MOt-MOwt-DownDiff)-AdjustH,MOw,MOh,ControlIn 'Right else setsize WinIn,(MOl-MOwl-GetSystemMetrics(32))+MovementIn,(MOt-MOwt-DownDiff)-AdjustH,MOw,MOh,ControlIn 'Right endif endif return endsub