JohnOne Posted March 29, 2014 Share Posted March 29, 2014 I thought this would be a simple task but it appears no to be so. I need to calculate the size and position, either absolute or relative to GUI, the area of a GUI of which is coloured black in the following simple example. I'm calling it the working area because client area does not fit my description. I've done a fair bit of looking around the forum and the accepted answers appears to be one of _WinAPI_GetSystemMetrics of the caption bar height and _WinAPI_GetClientRect. Neither of those suit my purpose. The area I'm getting encroaches on all borders and GUI title bar. expandcollapse popup#include <GUIConstantsEx.au3> #include <WinAPI.au3> $hGui = GUICreate("GUI", 400, 400) GUISetBkColor(0) GUISetState() _GetWorkingArea() Do Until GUIGetMsg() = -3 Func _GetWorkingArea() Local Const $SM_CYCAPTION = 4 Local Const $SM_CXBORDER = 5 Local $aWinPos = WinGetPos($hGui) Local $iMouseSpeed = 40 Local $iTitleBarHeight = _WinAPI_GetSystemMetrics($SM_CYCAPTION) Local $iBorderWidth = _WinAPI_GetSystemMetrics($SM_CXBORDER) Local $tRect = _WinAPI_GetClientRect($hGui) MouseMove($aWinPos[0] + $iBorderWidth, $aWinPos[1] + $iTitleBarHeight + $iBorderWidth, $iMouseSpeed) MouseMove($aWinPos[0] + $aWinPos[2], $aWinPos[1] + $iTitleBarHeight + $iBorderWidth, $iMouseSpeed) MouseMove($aWinPos[0] + $aWinPos[2] - ($iBorderWidth * 2), $aWinPos[1] + $aWinPos[3], $iMouseSpeed) MouseMove($aWinPos[0], $aWinPos[1] + $aWinPos[3] - ($iBorderWidth * 2), $iMouseSpeed) MouseMove($aWinPos[0] + $iBorderWidth, $aWinPos[1] + $iTitleBarHeight, $iMouseSpeed) MsgBox(4096, "Rect", _ "Left..: " & DllStructGetData($tRect, "Left") & @LF & _ "Right.: " & DllStructGetData($tRect, "Right") & @LF & _ "Top...: " & DllStructGetData($tRect, "Top") & @LF & _ "Bottom: " & DllStructGetData($tRect, "Bottom")) EndFunc ;==>_GetWorkingArea Anyone have idea how to cleanly solve this? Just adding a couple of pixels is not cleanly to me. AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
Solution JohnOne Posted March 29, 2014 Author Solution Share Posted March 29, 2014 (edited) Never mind, as is usually the case, I found solution almost immediately after posting Needed SM_CXFIXEDFRAME instead of SM_CXBORDER. Edited March 29, 2014 by JohnOne AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now