Jump to content

disable aero-snap for autoit gui?


iCode
 Share

Recommended Posts

played with this for a while and haven't figured it out

with windows 7, and i don;t know what other flavors, you can't move a window past the top of the display - i think aero-snap is pushing it back down

i've seen several threads on stackexchange about this, many of which say you can get around the problem with a combination of gui styles, however i could not find a combo that worked

what i don't understand in my example, is why the second (Y) element in the WinGetPos() array is returning 0 instead of the actual position when the mouse button is released (watch the end of the longer string in the console)

i'm trying to work around aero-snap without disabling it (not an option), but you will see from my example it isn't working

try moving this window past the top edge of your display...

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WINAPI.au3>

Global Const $frameSz = 128
Global Const $formSz = 500
Global $aPos

Global $Form1 = GUICreate("Form1", $formSz, $formSz, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
GUISetBkColor(0xFFFFFF)
Global $Label1 = GUICtrlCreateLabel("", 0, 0, $formSz, $formSz / 2 - $frameSz / 2, -1, $GUI_WS_EX_PARENTDRAG) ; top
GUICtrlSetBkColor(-1, 0x000000)
Global $Label2 = GUICtrlCreateLabel("", $formSz / 2 + $frameSz / 2, $formSz / 2 - $frameSz / 2, $formSz / 2 - $frameSz / 2, $frameSz, -1, $GUI_WS_EX_PARENTDRAG) ; right
GUICtrlSetBkColor(-1, 0x000000)
Global $Label3 = GUICtrlCreateLabel("", 0, $formSz / 2 + $frameSz / 2, $formSz, $formSz / 2 + $frameSz / 2, -1, $GUI_WS_EX_PARENTDRAG) ; bottom
GUICtrlSetBkColor(-1, 0x000000)
Global $Label4 = GUICtrlCreateLabel("", 0, $formSz / 2 - $frameSz / 2, $formSz / 2 - $frameSz / 2, $frameSz, -1, $GUI_WS_EX_PARENTDRAG) ; left
GUICtrlSetBkColor(-1, 0x000000)

GUISetState(@SW_SHOW)
_WinAPI_SetLayeredWindowAttributes($Form1, 0xFFFFFF, 150)

GUIRegisterMsg($WM_MOVE, "my_func1")
GUIRegisterMsg($WM_EXITSIZEMOVE, "my_func2")

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func my_func1()
    $aPos = WinGetPos($Form1)
    ConsoleWrite($aPos[1] & ".")
EndFunc

Func my_func2()
    ConsoleWrite(@LF & $aPos[1] & @LF)
    WinMove($Form1, "", $aPos[0], $aPos[1], $aPos[2], $aPos[3])
EndFunc

update: these changes get what i want, but i'd like to hear from anyone that might have better method ...

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WINAPI.au3>

Global Const $frameSz = 128
Global Const $formSz = 500
Global $aPos
Global $iLastPos

Global $Form1 = GUICreate("Form1", $formSz, $formSz, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
GUISetBkColor(0xFFFFFF)
Global $Label1 = GUICtrlCreateLabel("", 0, 0, $formSz, $formSz / 2 - $frameSz / 2, -1, $GUI_WS_EX_PARENTDRAG) ; top
GUICtrlSetBkColor(-1, 0x000000)
Global $Label2 = GUICtrlCreateLabel("", $formSz / 2 + $frameSz / 2, $formSz / 2 - $frameSz / 2, $formSz / 2 - $frameSz / 2, $frameSz, -1, $GUI_WS_EX_PARENTDRAG) ; right
GUICtrlSetBkColor(-1, 0x000000)
Global $Label3 = GUICtrlCreateLabel("", 0, $formSz / 2 + $frameSz / 2, $formSz, $formSz / 2 + $frameSz / 2, -1, $GUI_WS_EX_PARENTDRAG) ; bottom
GUICtrlSetBkColor(-1, 0x000000)
Global $Label4 = GUICtrlCreateLabel("", 0, $formSz / 2 - $frameSz / 2, $formSz / 2 - $frameSz / 2, $frameSz, -1, $GUI_WS_EX_PARENTDRAG) ; left
GUICtrlSetBkColor(-1, 0x000000)

GUISetState(@SW_SHOW)
_WinAPI_SetLayeredWindowAttributes($Form1, 0xFFFFFF, 150)

GUIRegisterMsg($WM_MOVE, "my_func1")
GUIRegisterMsg($WM_EXITSIZEMOVE, "my_func2")

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func my_func1()
    $aPos = WinGetPos($Form1)
    If $aPos[1] <> 0 Then $iLastPos = $aPos[1]
    ConsoleWrite($aPos[1] & ",")
EndFunc

Func my_func2()
    ConsoleWrite(@LF & $aPos[1] & @LF)
    WinMove($Form1, "", $aPos[0], $iLastPos, $aPos[2], $aPos[3])
EndFunc
Edited by iCode

FUNCTIONS: WinDock (dock window to screen edge) | EditCtrl_ToggleLineWrap (line/word wrap for AU3 edit control) | SendEX (yet another alternative to Send( ) ) | Spell Checker (Hunspell wrapper) | SentenceCase (capitalize first letter of sentences)

CODE SNIPPITS: Dynamic tab width (set tab control width according to window width)

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...