MsgBox an verschiedenen Stellen

  • Hi,
    normalerweise sind MsgBoxen ja immer in der Mitte des Bildschirms.

    Kann man die Positon auch ändern sodass sie z.B. rechts oben oder irgendwo anders ist?


    MfG

    Bladerunner ;)

    3 Mal editiert, zuletzt von Bladerunner85 (11. Dezember 2009 um 15:51)

  • Hmm ich glaube das geht nicht, du kannst es auch anschließend nicht verschieben lassen denn solange die MsgBox offen ist ist das Script pausiert.
    Als Workaround könntest du dir eine eigene MsgBox basteln, ich glaube sowas gibts sogar schon die kannst du dann auch direkt mit WinMove verschieben.

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Erstell dir praktisch selber eine MsgBox !
    Also du machste eine GUI die genau so aussieht ;)
    Diese kannst du dann überall erscheinen lassen ^^

    Edit:
    Fireflyer war zu schnell^^

  • Danke für eure Antworten. ;)

    Hab mir jetzt mal ne MsgBox nachgebaut.

    Wie kann ich aber festlegen an welcher X,Y Koordinate sie erscheint?

    MfG

    Bladerunner

  • Funktion GUICreateGUICreate


    Erstellt ein GUI-Fenster.


    GUICreate ( "title" [, width [, height [, left [, top [,
    style [, exStyle [, parent]]]]]]] )


    Parameter


    title
    Der Titel des GUI-Fensters.

    width
    [optional] Die Breite des Fensters.

    height
    [optional] Die Höhe des Fensters.

    left
    [optional] Die linke Seite der Dialogbox. Standardmäßig (Wert -1) wird das
    Fenster zentriert. Wenn left angegeben wird, muss auch top angegeben
    werden.

    top
    [optional] Die Oberkante der Dialogbox. Standardmäßig (Wert -1) wird das
    Fenster zentriert.

    style
    [optional] Definiert den Fenster-Stil. Siehe Anhang GUI-Stile für
    Controls
    .

    Verwende -1 für den Standard-Stil, der eine Kombination aus

    $WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU Stil ist.

    Einige
    Stile werden immer mit einbezogen: $WS_CLIPSIBLINGS, und $WS_SYSMENU wenn
    $WS_MAXIMIZEBOX oder $WS_SIZEBOX verwendet werden.

    exStyle
    [optional] Definiert den erweiterten Stil des Fensters. Siehe die Tabelle der erweiterten Stile
    weiter unten. -1 ist der Standardwert.

    parent
    [optional] Der Handle eines anderen, zuvor erstellten Fensters - dieses neue
    Fenster wird ein Child dieses Parent-Fensters.

  • Hi,
    danke ;)

    Manchmal sieht man den Wald vor lauter Bäumen nicht :D .

    Edit: Hab doch noch eine Frage ;) .
    Undzwar wie kann ich eine Form schließen ohne alle auf einmal zu schließen?

    Hier mein bisheriger Code:

    [autoit]


    $Form1 = GUICreate("Form1", 188, 135, 276, 336,BitOR($WS_CAPTION,$WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $Label1 = GUICtrlCreateLabel("Label1", 80, 24, 36, 17)
    $Button1 = GUICtrlCreateButton("Button1", 64, 80, 75, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "ExitClick")
    GUISetState(@SW_SHOW)

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

    Func ExitClick()
    Exit
    EndFunc

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

    Zweite Frage:

    Kann man mehrere gleiche Forms auf einmal erstellen?

    MfG

    Bladerunner

    Einmal editiert, zuletzt von Bladerunner85 (8. Dezember 2009 um 19:02)

  • Was ist eine Form?!
    Meinst du damit eine GUI?
    Die kannst du entweder mit GUISetState(@SW_HIDE ... verschwinden lassen
    Oder mit GUIDelete(... löschen
    In der Hilfe steht der genaue Syntax und es wird auch noch mehr dazu erklärt :D

    Ja, wenn du mit Form eine GUI meinst^^

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Funktioniert leider immer noch nicht :( .

    Also ich hab 4 selbst gebastelte MsgBoxen.
    Wenn ich bei der ersten auf den Button drücke soll dieser sich schließen,bei der zweiten soll diese sich schliesen usw..

    GUIDelete löscht leider nur die erste Box danach sind die anderen Buttons ohne Funktion.

    MfG

    Bladerunner

  • [autoit]

    $gui1 = GUICreate("Fenster 1", 200, 200)
    $gui2 = GUICreate("Fenster 2", 200, 200, 0, 0)
    GUISetState(@SW_SHOW, $gui1) ;zeige fenster 1
    GUISetState(@SW_SHOW, $gui2) ;zeige fenster 2
    Sleep(1000)
    GUISetState(@SW_HIDE, $gui2) ;fenster 2 wird versteckt
    Sleep(1000)
    GUISetState(@SW_SHOW, $gui2) ;fenster 2 wird wieder hergeholt
    Sleep(1000)
    GUIDelete($gui1) ;fenster 1 wird gelöscht
    Sleep(1000)
    ;end

    [/autoit]

    Hier mal ein Beispiel ;)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Hi,
    danke jetzt funktioniert es perfekt. ;)

    MfG

    Bladerunner

    PS: Das Forum hier ist wirklich das beste was es gibt! :rock:

  • machs doch mit Switch - Endswitch und

    [autoit]


    $hGui1 = GUICreate("GUI1")
    GUICtrlCreateButton("OK", ....)
    GUICtrlSetOnEvent(-1, "ButtonClick")
    $hGui2 = GUICreate("GUI2")
    GUICtrlSetOnEvent(-1, "ButtonClick")
    $hGui3 = GUICreate("GUI3")
    GUICtrlSetOnEvent(-1, "ButtonClick")
    $hGui4 = GUICreate("GUI4")
    GUICtrlSetOnEvent(-1, "ButtonClick")

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

    While 1
    WEnd

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

    Func ButtonClick()
    Switch @GUI_WinHandle
    Case $hGui1
    GUISetState(@SW_HIDE, $hGui1)
    Case $hGui2
    GUISetState(@SW_HIDE, $hGui2)
    Case $hGui3
    GUISetState(@SW_HIDE, $hGui3)
    Case $hGui4
    GUISetState(@SW_HIDE, $hGui4)
    EndSwitch
    EndFunc ;==>ButtonClick

    [/autoit]

    Sollte eigentlich so funktionieren..


    EDIT: Ach ne zu langsam -.-

  • Hab das ganze mal in eine funktion gepackt, vielleicht kannst du es ja gebrauchen

    _MsgBox("Text","Titel"(optional),X-Koordinate(optional),Y-Koordinate(optional))


    Spoiler anzeigen
    [autoit]

    _MsgBox("Hallo ich bin eine MsgBox. Ich möchte gerne an einer bestimmten Stelle umgebrochen werden.", "Hallo",200,300)

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

    Func _MsgBox($__MsgBox_sText, $__MsgBox_sTitle = "", $__MsgBox_x = -1, $__MsgBox_y = -1)
    Local $__MsgBox_sNewText, $__MsgBox_iStart, $__MsgBox_oldhWnd = GUISwitch(""), $__MsgBox_Ltop = 26

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

    While StringLen($__MsgBox_sText) > $__MsgBox_iStart + 70
    $__MsgBox_sNewText &= StringStripWS(StringTrimRight(StringTrimLeft($__MsgBox_sText, $__MsgBox_iStart), StringLen($__MsgBox_sText) - $__MsgBox_iStart - 70), 1) & "|"
    $__MsgBox_iStart += 70
    WEnd
    $__MsgBox_sNewText &= StringStripWS(StringTrimLeft($__MsgBox_sText, $__MsgBox_iStart), 1)
    $__MsgBox_aNewText = StringSplit($__MsgBox_sNewText, "|")
    $__MsgBox_hGUI = GUICreate($__MsgBox_sTitle, 435, 127 + (15 * $__MsgBox_aNewText[0]), $__MsgBox_x, $__MsgBox_y, BitOR(0x00000080, 0x00080000, 0x00400000))
    GUISetFont(9.6)
    For $i = 1 To $__MsgBox_aNewText[0]
    GUICtrlCreateLabel($__MsgBox_aNewText[$i], 12, $__MsgBox_Ltop, 435 - 24, 15)
    $__MsgBox_Ltop += 15
    Next
    GUICtrlCreateLabel(" ", 0, $__MsgBox_Ltop + 30, 435, (127 + (15 * $__MsgBox_aNewText[0])) - ($__MsgBox_Ltop + 30))
    GUICtrlSetState(-1, 128)
    GUICtrlSetBkColor(-1, 0x00F0F0F0)
    GUISetBkColor(0xFFFFFF)
    $__MsgBox_btn_Ok = GUICtrlCreateButton("OK", 323, $__MsgBox_Ltop + 43, 100, 25)
    GUISetState()
    DllCall("user32.dll", "int", "MessageBeep", "int", 0x0)
    Do
    $__MsgBox_nMsg = GUIGetMsg()
    Sleep(10)
    Until $__MsgBox_nMsg = -3 Or $__MsgBox_nMsg = $__MsgBox_btn_Ok

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

    GUIDelete($__MsgBox_hGUI)
    GUISwitch($__MsgBox_oldhWnd)
    EndFunc

    [/autoit]

    Wer mag, kann gerne die automatische Größenanpassung einzubauen ^^