Advertisement
Guest User

resize popup by callback

a guest
Aug 7th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 1.80 KB | None | 0 0
  1. #include <GUIConstantsEx.au3>
  2. #include <WindowsConstants.au3>
  3. #include <WinAPISysWin.au3>
  4. #include <WinAPIMisc.au3>
  5.  
  6. Global $w = 300, $h = 250
  7. Global $cb = DllCallbackRegister('callback', 'int', 'hwnd;uint;wparam;lparam')
  8. Global $oldproc;
  9.  
  10. #Region ### START Koda GUI section ### Form=
  11. $Form1 = GUICreate("Form1", $w, $h, -1, -1, $ws_popup)
  12.  
  13. GUICtrlCreateLabel('', 0, 0, 5, $h)
  14. GUICtrlSetBkColor(-1, 0x0080ff)
  15. GUICtrlSetState(-1, 128)
  16.  
  17. GUISetState(@SW_SHOW)
  18.  
  19. $oldproc = _WinAPI_SetWindowLong($Form1, -4, DllCallbackGetPtr($cb))
  20.  
  21. #EndRegion ### END Koda GUI section ###
  22.  
  23. While 1
  24.     $nMsg = GUIGetMsg()
  25.     Switch $nMsg
  26.         Case $GUI_EVENT_CLOSE
  27.             GUIDelete()
  28.             DllCallbackFree($cb)
  29.             Exit
  30.  
  31.     EndSwitch
  32. WEnd
  33.  
  34. Func callback($hwnd, $msg, $wp, $lp)
  35.  
  36.     Switch $msg
  37.         Case 0x0084
  38.             return NCHITTEST($hwnd, $lp)
  39.  
  40.     EndSwitch
  41.  
  42.     Return _WinAPI_CallWindowProcW($oldproc, $hwnd, $msg, $wp, $lp)
  43.  
  44. EndFunc
  45.  
  46. Func NCHITTEST($hwnd, $lParam)
  47.     Local $iSide = 0, $iTopBot = 0, $Cur = 0
  48.     Local $wPos = WinGetPos($hWnd)
  49.     Local $tPos = _WinAPI_GetMousePos(True, $hWnd)
  50.     Local $bMarg = 10 ; border size
  51.     If Not @error Then
  52.         If $tPos.x < $bMarg Then $iSide = 1 ; left
  53.         If $tPos.x > ($wPos[2] - $bMarg) Then $iSide = 2 ; right
  54.         If $tPos.y < $bMarg Then $iTopBot = 3 ; top
  55.         If $tPos.y > ($wPos[3] - $bMarg) Then $iTopBot = 6 ; bottom
  56.         $Cur = $iSide + $iTopBot
  57.     EndIf
  58.     If WinGetState($hWnd) < 32 Then ; // check win not maximize
  59.         Local $HT = 2
  60.         Switch $Cur
  61.             Case 1
  62.                 $HT = 10
  63.             Case 2
  64.                 $HT = 11
  65.             Case 3
  66.                 $HT = 12
  67.             Case 4
  68.                 $HT = 13
  69.             Case 5
  70.                 $HT = 14
  71.             Case 6
  72.                 $HT = 15
  73.             Case 7
  74.                 $HT = 16
  75.             Case 8
  76.                 $HT = 17
  77.         EndSwitch
  78.         If $HT <> 2 Then Return $HT
  79.     EndIf
  80.     If Abs(BitAND(BitShift($lParam, 16), 0xFFFF) - $wPos[1]) < 30 Then Return 2
  81.     Return 1 ; client
  82. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement