Jump to content

Get position of control to the screen?


Bot
 Share

Recommended Posts

Hello,

I know that the function ControlGetPos can retrieve the position of the control relative to it's window but are there any way to get this to the screen? Thanks.

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 623, 449, -1, -1)
$Input1 = GUICtrlCreateInput("Input1", 8, 8, 609, 21)
GUISetState(@SW_SHOW)

$pos = ControlGetPos("Form1", "", "[CLASS:Edit; INSTANCE:1]")
MsgBox(0, "Window Stats:", "POS: " & $pos[0] & "," & $pos[1] & " SIZE: " & $pos[2] & "," & $pos[3] )

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
Link to comment
Share on other sites

Hows this ?

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 623, 449, -1, -1)
$Input1 = GUICtrlCreateInput("Input1", 8, 8, 609, 21)
GUISetState(@SW_SHOW)

$pos = ControlGetPos("Form1", "", "[CLASS:Edit; INSTANCE:1]")
MsgBox(0, "Window Pos Stats:", "POS: " & $pos[0] & "," & $pos[1] & " SIZE: " & $pos[2] & "," & $pos[3])
$iWinPos = WinGetPos("Form1")
$iClientSize = WinGetClientSize("Form1")
Global $aScreenPos[2] = [$iWinPos[0] + $pos[0] + ($iWinPos[2] - $iClientSize[0]), $iWinPos[1] + $pos[1] + ($iWinPos[3] - $iClientSize[1])]

MsgBox(0, "Screen Pos Stats:", "POS: " & $aScreenPos[0] & "," & $aScreenPos[1] & " SIZE: " & $pos[2] & "," & $pos[3])
MouseClickDrag("Left", $aScreenPos[0], $aScreenPos[1] + $pos[3] / 2, $aScreenPos[0] + 5, $aScreenPos[1] + $pos[3] / 2)
Send("{RIGHT} side of the in")

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
GDIPlusDispose - A modified version of GDIPlus that auto disposes of its own objects before shutdown of the Dll using the same function Syntax as the original.EzMySql UDF - Use MySql Databases with autoit with syntax similar to SQLite UDF.
Link to comment
Share on other sites

  • Moderators

Bot,

Or this: :mellow:

#include <GUIConstantsEx.au3>
#include <WinAPI.au3>

$hGUI = GUICreate("Test", 500, 500)

$hLabel = GUICtrlCreateLabel("Here", 10, 10, 80, 30)
GUICtrlSetBkColor(-1, 0xFFCCCC)

$hButton = GUICtrlCreateButton("Coords", 10, 50, 80, 30)

GUISetState()

While 1

    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hButton
            $aPos = ControlGetPos($hGUI, "", $hLabel)
            MsgBox(0, "Position", "Relative to GUI:" & @CRLF & $aPos[0] & " - " & $aPos[1])
            $tPoint = DllStructCreate("int X;int Y")
            DllStructSetData($tpoint, "X", $aPos[0])
            DllStructSetData($tpoint, "Y", $aPos[1])
            _WinAPI_ClientToScreen($hGUI, $tPoint)
            MsgBox(0, "Position", "Relative to Screen:" & @CRLF & DllStructGetData($tpoint, "X") & " - " & DllStructGetData($tpoint, "Y"))
    EndSwitch

WEnd

Move the GUI around and see how the results change!

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

You all forgot WinGetPos :mellow:

#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Test", 320, 160)

$hLabel = GUICtrlCreateLabel("Here", 10, 10, 80, 30)
GUICtrlSetBkColor(-1, 0xFFCCCC)
$hLabelh = GUICtrlGetHandle($hLabel)

$hButton = GUICtrlCreateButton("Coords", 10, 50, 80, 30)

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hButton
            $aPos = ControlGetPos($hGUI, "", $hLabel)
            MsgBox(0, "Position", "Relative to GUI:" & @CRLF & $aPos[0] & " - " & $aPos[1])
            $aPos = WinGetPos($hLabelh)
            MsgBox(0, "Position", "Relative to Screen:" & @CRLF & $aPos[0] & " - " & $aPos[1])
    EndSwitch
WEnd
Link to comment
Share on other sites

  • Moderators

AdmiralAlkex,

:mellow: How did we miss that?

Thanks! :P

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...