Funktionreferenz


GUICreate

Beschreibung anzeigen in

Erstellt ein GUI-Fenster.

GUICreate ( "title" [, width [, height [, left = -1 [, top = -1 [, style = -1 [, exStyle = -1 [, parent = 0]]]]]]] )

Parameter

title Der Titel des GUI-Fensters.
width [optional] Die Breite des Client-Bereichs des Fensters.
height [optional] Die Höhe des Client-Bereichs 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.
Verwende -1 für Standard, der keinen erweiterten Stil enthält.
Erzwungene Stile: $WS_EX_WINDOWEDGE
parent [optional] Das Handle eines anderen, zuvor erstellten Fensters - dieses neue Fenster wird ein Child dieses Parent-Fensters.

Rückgabewert

Erfolg: Das Handle des Fensters.
Fehler: 0, wenn das Fenster nicht erstellt werden kann und setzt @error auf 1.

Bemerkungen

Standardmäßig ist die Dialogbox (GUI) in ihrer Größe nicht veränderbar und kann nicht maximiert werden. Deshalb können hierfür WS_SIZEBOX oder WS_MAXIMIZEBOX als Stil-Parameter verwendet werden.
Wenn WS_SIZEBOX verwendet wird, wird die erste Dialogbox als minimale Größe verwendet und beim Vergrößern des Fensters werden die Controls automatisch positioniert.
Wenn man nur einen Stil definiert, wird auch nur dieser eine Stil gesetzt. Man sollte also nicht vergessen, ihn mit Standard-Stilen zu kombinieren. Zum Beispiel werden beim Verwenden von WS_SIZEBOX nicht automatisch auch $WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP und $WS_SYSMENU gesetzt. Deshalb ist es für ein größenveränderliches Fenster am besten, $WS_OVERLAPPEDWINDOW zu benutzen.
Verwendet man $WS_EX_MDICHILD, dann ist die Position relativ zum Client-Bereich des Parent-Fensters. Mit $WS_EX_LAYERED ist es möglich, ein transparentes Bild über ein im Parent-Fenster definiertes Hintergrundbild zu legen.
Das Verwenden von $WS_CLIPCHILDREN kann flackern verhindern, wenn zum Beispiel eine GUI mit einem Edit Control in der Größe verändert wird.
Man kann das ziehen eines Fensters für GUI aktivieren ohne $WS_CAPTION zu verwenden. Stattdessen kann man $WS_EX_CONTROLPARENT als erweiterten Stil verwenden.

Um weitere Stile zum Standardstil hinzuzufügen ist BitOR($GUI_SS_DEFAULT_GUI, newstyle, ...) zu verwenden.
mit der festgelegten Größe ist die Arbeitsfläche der GUI gemeint. Der Rand und die Titelzeile macht das Fenster etwas größer als festgelegt. Verwendet man Menu Controls, so ändert sich auch die Fensterhöhe.

Tabelle Erweiterte Stile

erweiterter Stil Resultat
$WS_EX_ACCEPTFILES Erlaubt es, einen Dateinamen per Drag-and-Drop in ein Edit- oder Input-Control einzufügen. Das Textfeld muss zusätzlich mit GUICtrlSetState() auf den Status $GUI_DROPACCEPTED gesetzt werden. Bei anderen Controls kann die Drag-and-Drop-Information über @GUI_DRAGID, @GUI_DRAGFILE, @GUIDROPID erhalten werden.
$WS_EX_APPWINDOW Das Fenster erscheint nur als aktuelles Fenstersymbol (top-level) auf der Taskleiste.
$WS_EX_CLIENTEDGE Legt fest, dass ein Fenster einen Rahmen mit abgesenkter Kante hat.
$WS_EX_CONTEXTHELP Bindet ein Fragezeichen in die Titelleiste des Fensters ein. Kann nicht zusammen mit $WS_MAXIMIZEBOX oder $WS_MINIMIZEBOX verwendet werden.
$WS_EX_DLGMODALFRAME Erstellt ein Fenster mit doppeltem Rahmen. Das Fenster kann optional mit einer Titelleiste erstellt werden, indem der WS_CAPTION Stil als Stilparameter angegeben wird.
$WS_EX_MDICHILD Erstellt ein Child-Fenster welches zusammen mit dessen Parent-Fenster bewegt wird (Die Simulation eines MDI-Fensters mit maximieren und minimieren werden nicht simuliert).
$WS_EX_OVERLAPPEDWINDOW Kombiniert die beiden Stile $WS_EX_CLIENTEDGE und $WS_EX_WINDOWEDGE.
$WS_EX_STATICEDGE Erstellt ein Fenster mit einem 3D-Rahmen-Stil, das für Felder gedacht ist, die keine Eingaben durch Benutzer akzeptieren.
$WS_EX_TOPMOST Legt fest, dass ein Fenster mit diesem Stil vor allen anderen Fenstern platziert werden soll und auch dann das vorderste Fenster bleibt, selbst wenn das Fenster deaktiviert wird.
$WS_EX_TRANSPARENT Das Fenster erscheint transparent, weil die Ausschnitte der darunterliegenden "Geschwister"-Fenster schon angezeigt worden sind.
$WS_EX_TOOLWINDOW Erstellt eine Toolbar (tool window); das heißt, ein Fenster, das als schwebende Symbolleiste verwendet werden soll. Eine Toolbar hat eine Titelleiste, die kürzer ist als normale Titelleisten, und der Fenstertitel wird mit einer kleineren Schrift angezeigt. Eine Toolbar erscheint nicht in der Taskleiste oder im Dialogfeld, das erscheint, wenn der Benutzer die Tastenkombination ALT+TAB drückt. Wenn ein solches Fenster ein System-Menü hat, wird kein Icon dafür auf der Titelleiste angezeigt. Man kann das System-Menü aber trotzdem mit ALT+SPACE sichtbar machen.
$WS_EX_WINDOWEDGE Legt fest, dass ein Fenster einen Rahmen mit erhöhter Kante hat.
$WS_EX_LAYERED Erstellt ein Fenster mit mehreren Schichten (Layern). Beachte, dass dieser Stil nicht für Child-Fenster verwendet werden kann.

Um die oben genannten Werte verwenden zu können, muss #include <WindowsConstants.au3> in das Skript eingefügt werden.

Folgendes ist zu beachten: Das zurückgegebene Handle dieser Funktion, ist ein echtes Fenster-Handle, was heißt, dass es in der gleichen Art verwendet werden kann wie der Rückgabewert von WinGetHandle().
Wird für das ändern der Fenstergröße WinMove() vor GuiSetState() verwendet, so ändert sich die Position und Größe der definierten Controls nicht.

- - - - - - - - Erklärung der Controls - - - - - - - -

Verwandte Funktionen

GUICtrlCreate..., GUICtrlSetDefBkColor, GUICtrlSetDefColor, GUIDelete, GUIGetCursorInfo, GUIGetMsg, GUIGetStyle, GUISetParameters..., GUISetState, GUISwitch, WinGetHandle, WinMove

Beispiel

Beispiel 1

#include <GUIConstantsEx.au3>

Example()

Func Example()
    ; Erstellt eine GUI mit verschiedenen Controls.
    Local $hGUI = GUICreate("Beispiel", 400, 400)
    Local $idOK = GUICtrlCreateButton("OK", 310, 370, 85, 25)

    Local $aWindow_Size = WinGetPos($hGUI)
    ConsoleWrite('Fensterbreite  = ' & $aWindow_Size[2] & @CRLF)
    ConsoleWrite('Fensterhöhe = ' & $aWindow_Size[3] & @CRLF)
    Local $aWindowClientArea_Size = WinGetClientSize($hGUI)
    ConsoleWrite('Breite des Clientbereichs des Fensters = ' & $aWindowClientArea_Size[0] & @CRLF)
    ConsoleWrite('Höhe des Clientbereichs des Fensters = ' & $aWindowClientArea_Size[1] & @CRLF)

    ; Zeigt die GUI
    GUISetState(@SW_SHOW, $hGUI)

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst.
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $idOK
                ExitLoop

        EndSwitch
    WEnd

    ; Löscht die vorherige GUI und alle Controls.
    GUIDelete($hGUI)
EndFunc   ;==>Example

Beispiel 2

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

Example()

Func Example()
    Local $sFilePath = "..\GUI\logo_autoit_210x72.gif"

    ; Erstellt eine GUI mit verschiedenen Controls
    Local $hGui = GUICreate("Beispiel", 400, 100)
    GUICtrlCreatePic("..\GUI\msoobe.jpg", 0, 0, 400, 100)

    ; Zeigt die GUI.
    GUISetState(@SW_SHOW, $hGui)

    Local $hChild = GUICreate("", 210, 72, 20, 15, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hGUI)

    ; Erstellt ein Picture Control mit einem transparenten Bild.
    GUICtrlCreatePic($sFilePath, 0, 0, 210, 72)

    ; Zeigt die child GUI.
    GUISetState(@SW_SHOW)

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst.
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop

        EndSwitch
    WEnd

    ; Löscht die vorherige GUI und alle Controls.
    GUIDelete($hGui)
    GUIDelete($hChild)
EndFunc   ;==>Example