unabhängige Messagebox

  • Guten Morgen an die Gemeinde

    da ich erst seit gestern Autoit kenne und auch erst seit gestern damit rumspiele, reisst mir bitte ned glei mein Kopf runter wenn jetzt ne Noob-Frage kommt.

    Wollte wissen ob man eine Messagebox unabhängig vom Parentfenster machen kann. D.h. so dass man das Parentfenster zumachen kann, die Messagebox aber bestehen bleibt.

    Grund: versuche mich grade an nem Progrämmle, bei dem man benutzerdefinierte Meldungsfenster ausgeben kann. Man gibt nen Text ein, wählt das Meldungssymbol und schwupps hat man an Meldungsfenster aufm Bildschirm und das Hauptprogramm ist nemme zu sehn oder wird geschlossen (z.b. wenn ich an meim Bruder seim PC mal wieder war *Hab dein Mailprogramm wieder eingerichtet* und einfach nen OK Button drunter)


    [autoit]

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

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

    Opt('MustDeclareVars', 1)

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

    Global $Button, $msgbox, $asMsgText, $iFlag
    Global $optWarning, $optInfo, $optCritical, $optQuestion
    Global $optNoIcon, $optApplication, $optSysModal, $optTaskModal, $optOK

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

    _Main()

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

    ;Grafische Oberfläche
    Func _Main()
    Local $TITLE, $TEXT, $Timeout
    Local $BTNEXIT, $BTNPREVIEW, $MSG, $sText

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

    ; hauptfenster
    GUICreate("Messagebox", 220, 350, 650, 450, -1)

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

    ;überschrift
    GUICtrlCreateLabel("Title", 10, 5, 30)
    $TITLE = GUICtrlCreateInput("Meldung", 10, 20, 200, 20)
    GUICtrlSetTip(-1, "Die Überschrift der Messagebox")

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

    ;textfeld
    GUICtrlCreateLabel("Text", 10, 50, 30)
    $TEXT = GUICtrlCreateEdit("", 10, 65, 200, 50, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_MULTILINE + $ES_WANTRETURN)
    GUICtrlSetState(-1, $GUI_FOCUS)
    GUICtrlSetTip(-1, "Der auszugebende Text")

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

    ;icon wahl
    GUICtrlCreateGroup("Icons", 10, 120, 200, 130)
    $optNoIcon = GUICtrlCreateRadio("Kein Icon", 20, 140, 100, 20)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $optWarning = GUICtrlCreateRadio("Warnung", 20, 160, 100, 20)
    $optInfo = GUICtrlCreateRadio("Information", 20, 180, 100, 20)
    $optCritical = GUICtrlCreateRadio("Error", 20, 200, 100, 20)
    $optQuestion = GUICtrlCreateRadio("Frage", 20, 220, 100, 20)

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

    ;timeout wahl
    GUICtrlCreateGroup("Timeout", 10, 255, 200, 50)
    $Timeout = GUICtrlCreateInput("", 20, 275, 100, 20, $ES_NUMBER, $WS_EX_STATICEDGE)
    GUICtrlCreateLabel("Sekunden", 130, 277, 50)
    GUICtrlSetTip(-1, "Zeit in Sekunden, nach der die Messagebox automatisch geschlossen wird")

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

    ;button -> ausgeben
    $BTNPREVIEW = GUICtrlCreateButton("&Ausgeben", 10, 312, 80)
    GUICtrlSetTip(-1, "Messagebox ausgeben")
    ;button -> verlassen
    $BTNEXIT = GUICtrlCreateButton("&Exit", 130, 312, 80)
    GUICtrlSetTip(-1, "Programm schließen")

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

    GUISetState()

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

    While 1
    $MSG = GUIGetMsg()
    Select
    Case $MSG = $BTNEXIT Or $MSG = $GUI_EVENT_CLOSE
    Exit

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

    Case $MSG = $BTNPREVIEW
    MsgBox( _SetFlag($iFlag) + 262144, GUICtrlRead($TITLE), GUICtrlRead($TEXT), GUICtrlRead($Timeout))

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

    EndSelect

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

    WEnd
    EndFunc ;==>_Main

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

    Func _SetFlag($iFlag)
    $iFlag = 0

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

    ;Icons
    Select
    Case GUICtrlRead($optWarning) = $GUI_CHECKED
    $iFlag = $iFlag + 48
    Case GUICtrlRead($optInfo) = $GUI_CHECKED
    $iFlag = $iFlag + 64
    Case GUICtrlRead($optCritical) = $GUI_CHECKED
    $iFlag = $iFlag + 16
    Case GUICtrlRead($optQuestion) = $GUI_CHECKED
    $iFlag = $iFlag + 32
    EndSelect

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

    Return $iFlag
    EndFunc ;==>_SetFlag

    [/autoit]

    P.S. das Design will ich noch ändern, die Iconauswahl und das Timeout sollen in Menüs, so dass nur die 2 Eingabefenster zu sehen sind. Aber erstmal Funktion dann das Design.

    Einmal editiert, zuletzt von Piccolo1986 (26. März 2009 um 08:34)

  • hmmm beende einfach die GUI (mit Exitloop aus der While Schleife) dann einfach die Message Box ausgeben. Und danach ein Exit.

    Wird dann auf OK geklickt ist das Programm geschlossen.

    Oder Lass die GUI ganz weg und arbeite z.B. mit 3 Inputboxen -> Typ, Text, Timeout oder sowas

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • ...mkay.. mal schaun was ich aus deiner Antwort zaubern kann, wie gesagt, kenn mich ned soooo dolle mit Programmieren und Autoit aus, aber ich versuchs
    Thx

  • Ok hier der Quellcode:

    Spoiler anzeigen
    [autoit]


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

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

    Opt('MustDeclareVars', 1)

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

    Global $Button, $msgbox, $asMsgText, $iFlag, $Form
    Global $optWarning, $optInfo, $optCritical, $optQuestion
    Global $optNoIcon, $optApplication, $optSysModal, $optTaskModal, $optOK

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

    _Main()

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

    ;Grafische Oberfläche
    Func _Main()
    Local $TITLE, $TEXT, $Timeout
    Local $BTNEXIT, $BTNPREVIEW, $MSG, $sText

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

    ; hauptfenster
    $Form = GUICreate("Messagebox", 220, 350, 650, 450, -1)

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

    ;überschrift
    GUICtrlCreateLabel("Title", 10, 5, 30)
    $TITLE = GUICtrlCreateInput("Meldung", 10, 20, 200, 20)
    GUICtrlSetTip(-1, "Die Überschrift der Messagebox")

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

    ;textfeld
    GUICtrlCreateLabel("Text", 10, 50, 30)
    $TEXT = GUICtrlCreateEdit("", 10, 65, 200, 50, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_MULTILINE + $ES_WANTRETURN)
    GUICtrlSetState(-1, $GUI_FOCUS)
    GUICtrlSetTip(-1, "Der auszugebende Text")

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

    ;icon wahl
    GUICtrlCreateGroup("Icons", 10, 120, 200, 130)
    $optNoIcon = GUICtrlCreateRadio("Kein Icon", 20, 140, 100, 20)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $optWarning = GUICtrlCreateRadio("Warnung", 20, 160, 100, 20)
    $optInfo = GUICtrlCreateRadio("Information", 20, 180, 100, 20)
    $optCritical = GUICtrlCreateRadio("Error", 20, 200, 100, 20)
    $optQuestion = GUICtrlCreateRadio("Frage", 20, 220, 100, 20)

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

    ;timeout wahl
    GUICtrlCreateGroup("Timeout", 10, 255, 200, 50)
    $Timeout = GUICtrlCreateInput("", 20, 275, 100, 20, $ES_NUMBER, $WS_EX_STATICEDGE)
    GUICtrlCreateLabel("Sekunden", 130, 277, 50)
    GUICtrlSetTip(-1, "Zeit in Sekunden, nach der die Messagebox automatisch geschlossen wird")

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

    ;button -> ausgeben
    $BTNPREVIEW = GUICtrlCreateButton("&Ausgeben", 10, 312, 80)
    GUICtrlSetTip(-1, "Messagebox ausgeben")
    ;button -> verlassen
    $BTNEXIT = GUICtrlCreateButton("&Exit", 130, 312, 80)
    GUICtrlSetTip(-1, "Programm schließen")

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

    GUISetState()

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

    While 1
    $MSG = GUIGetMsg()
    Select
    Case $MSG = $BTNEXIT Or $MSG = $GUI_EVENT_CLOSE
    Exit

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

    Case $MSG = $BTNPREVIEW
    GUISetState (@SW_HIDE, $Form)
    MsgBox( _SetFlag($iFlag) + 262144, GUICtrlRead($TITLE), GUICtrlRead($TEXT), GUICtrlRead($Timeout))
    ExitLoop

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

    EndSelect

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

    WEnd
    EndFunc ;==>_Main

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

    Func _SetFlag($iFlag)
    $iFlag = 0

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

    ;Icons
    Select
    Case GUICtrlRead($optWarning) = $GUI_CHECKED
    $iFlag = $iFlag + 48
    Case GUICtrlRead($optInfo) = $GUI_CHECKED
    $iFlag = $iFlag + 64
    Case GUICtrlRead($optCritical) = $GUI_CHECKED
    $iFlag = $iFlag + 16
    Case GUICtrlRead($optQuestion) = $GUI_CHECKED
    $iFlag = $iFlag + 32
    EndSelect

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

    Return $iFlag
    EndFunc ;==>_SetFlag

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


    Sollte soweit verständlich sein ;)

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"