Start Position an Desktop anpassen

  • Hallo,

    Ich habe wieder mal ein Problem: :D

    Und zwar habe ich ein 100x100 (egal) großes fenster, und dieses sollte sich immer über den dazugehörigen TrayIcon öffnen (bei klick auf den Tray, über diesem aufscheinen).

    Da es aber größere und kleinere Desktops gibt (1600x1400, 1240x1080,... xD) und sich dann die StartPosition des Fensters verändert, bzw. gar nicht mehr zusehen ist, weil der Desktop zu klein ist, möchte ich diese Position wie oben genannt festlegen.

    Bitte um Lösungsvorschläge :thumbup:

    Greez mcOOcr

    Einmal editiert, zuletzt von mcoocr (27. März 2009 um 15:53)

    • Offizieller Beitrag

    Füg das mal an den Skriptanfang ein. Dann wird deine GUI beim Start so verschoben, dass die rechte untere Ecke sich über dem Mauszeiger befindet, also der Position des Traysymbols beim Klicken.

    [autoit]

    ; Deine GUI-Deklaration
    $GUI_ID = GUICreate('')
    ;...
    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    ;######### Hier die Position setzen #############
    Local $mouse = MouseGetPos(), $win = WinGetPos($GUI_ID)
    WinMove($GUI_ID, '', $mouse[0]-$win[2], $mouse[1]-($win[3]+20))

    [/autoit][autoit][/autoit][autoit]

    While 1
    ;..
    WEnd

    [/autoit]
  • Hallo,

    Danke für das Script :D

    Aber bei mir funktioniert etwas nicht. 8|

    Das ist mein Script:

    Spoiler anzeigen
    [autoit]

    #Region
    ;Form Main
    $GUI = GUICreate("... ", 0, 0, -300, -300, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $Edit = GUICtrlCreateEdit("", 8, 8, 169, 113)
    If FileExists("List.dll") Then
    $readtxt = FileOpen("List.dll",0)
    $savereadtxt = FileRead($readtxt)
    GUICtrlSetData($Edit,$savereadtxt & @CRLF)
    FileClose($readtxt)
    GUISetState(@SW_SHOW)
    Send("{END}")
    GUISetState(@SW_HIDE)
    Else
    GUICtrlSetData($Edit, "..." )
    GUISetState(@SW_SHOW)
    Send("{END}")
    GUISetState(@SW_HIDE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;WinMove($GUI,"",1052,566,191,184,1)
    GUISetIcon("...")
    $savelist = GUICtrlCreateButton("", 6, 128, 173, 25, 0)

    [/autoit] [autoit][/autoit] [autoit]

    TraySetClick("9")

    [/autoit] [autoit][/autoit] [autoit]

    ;Tray Menü
    $MenuItem3 = TrayCreateItem("Pause")
    TrayItemSetOnEvent(-1,"pause")
    $MenuItem2 = TrayCreateItem("Einstellungen")
    TrayItemSetOnEvent(-1,"config") ;hier hab ich dann dein Script eingesetzt, also bei der Funktion unter :D
    $MenuItem1 = TrayCreateItem("Schließen")
    TrayItemSetOnEvent(-1,"close")
    GUISetIcon("icon.ico")
    #EndRegion
    ; GUI Design

    [/autoit]

    Hier du Funktion

    [autoit]


    Func config()
    GUISetState(@SW_SHOW)
    Local $mouse = MouseGetPos(), $win = WinGetPos($GUI)
    WinMove($GUI, "", $mouse[0]-$win[2], $mouse[1]-($win[3]+20), 191,184)
    EndFunc

    [/autoit]


    Bei mir erscheint das Fenster rechts neben dem Maus Cursor, was sich dann nicht ausgeht xD.

    So sollte es aufscheinen: :thumbup:

    [Blockierte Grafik: http://img440.imageshack.us/img440/1733/examplew.jpg]

    Greez mcOOcr

    • Offizieller Beitrag

    Hier mal ein funktionierendes Bsp.:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #NoTrayIcon

    [/autoit] [autoit][/autoit] [autoit]

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.

    [/autoit] [autoit][/autoit] [autoit]

    $GUI = GUICreate('Test')

    [/autoit] [autoit][/autoit] [autoit]

    $displayitem = TrayCreateItem("Display")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")

    [/autoit] [autoit][/autoit] [autoit]

    TraySetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = $displayitem
    _moveGUI($GUI)
    GUISetState(@SW_SHOW, $GUI)
    Case $msg = $exititem
    ExitLoop
    EndSelect
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then GUISetState(@SW_HIDE, $GUI)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _moveGUI($GUI_ID)
    Local $mouse = MouseGetPos(), $win = WinGetPos($GUI_ID)
    WinMove($GUI_ID, '', $mouse[0]-$win[2], $mouse[1]-($win[3]+20))
    EndFunc

    [/autoit]