#cs
===== Funktionsübersicht =====
_GUIDock_StartUp($hWnd)
	Initialisiert notwendige Variablen
	$hWnd bekommt Status MainWindow
	registriert ShutDown-Funktion

_GUIDock_DockWindow($vWnd [, $vAlign])
	Einzelnes (oder Array mit mehreren) GUI-Hwnd andocken
	Werden Anordnung und Ausrichtung NICHT in $vAlign übergeben, muß dieses anschließend mit _GUIDock_SetAlignment ausgeführt werden
	Bei Übergabe eines einzelnen Hwnd ist $vAlign vorbelegt mit Rechts-Oben

_GUIDock_UnDockWindow($vWnd)
	Einzelnes (oder Array mit mehreren) GUI-Hwnd abdocken

_GUIDock_SetDistance($iDistance=-1)
	Abstand zwischen Main-GUI und gedockten Fenstern.
	Standard ist die Borderbreite aus den Systemmetrics

_GUIDock_SetAlignment($hWnd, $iAlign)
	Fensteranordnung + Ausrichtung durch BitOr-Verknüpfung folgender Konstanten:

	Andocken rechts	$_GUI_DOCK_RIGHT
	Andocken unten	$_GUI_DOCK_BOTTOM
	Andocken links	$_GUI_DOCK_LEFT
	Andocken oben	$_GUI_DOCK_TOP

	Ausrichten links oder oben		$_GUI_ALIGN_LEFTorTOP
	Ausrichten zentriert			$_GUI_ALIGN_CENTER
	Ausrichten rechts oder unten	$_GUI_ALIGN_RIGHTorBOTTOM
#ce

#include 'GUIDocking.au3'
#include <GUIConstantsEx.au3>

$gui1 = GUICreate("Nummer 1", 300, 300)
$btUndock = GUICtrlCreateButton('UnDock GUI UNTEN', 50, 50, 200, 20)
$btRedock = GUICtrlCreateButton('ReDock GUI UNTEN', 50, 90, 200, 20)
GUICtrlSetState(-1, $GUI_DISABLE)
$gui2 = GUICreate("Ich bin gedockt RECHTS-UNTEN", 200, 200, -1, -1, -1, $WS_EX_TOOLWINDOW)
$gui3 = GUICreate("Ich bin gedockt LINKS-OBEN", 200, 200, -1, -1, -1, $WS_EX_TOOLWINDOW)
$gui4 = GUICreate("Ich bin gedockt UNTEN-LINKS", 400, 200, -1, -1, -1, $WS_EX_TOOLWINDOW)

GUISetState(@SW_SHOW, $gui4)
GUISetState(@SW_SHOW, $gui3)
GUISetState(@SW_SHOW, $gui2)
GUISetState(@SW_SHOW, $gui1)

; === Docking starten mit Übergabe der Main-GUI
_GUIDock_StartUp($gui1)

; === Array mit zu dockenden GUI erstellen
Local $aGUI[3] = [$gui2,$gui3,$gui4]

; === Array mit Kombination Dockposition/-ausrichtung je GUI
Local $aAlign[3] = [BitOR($_GUI_DOCK_RIGHT,$_GUI_ALIGN_RIGHTorBOTTOM), _
                    BitOR($_GUI_DOCK_LEFT,$_GUI_ALIGN_LEFTorTOP), _
					BitOR($_GUI_DOCK_BOTTOM,$_GUI_ALIGN_LEFTorTOP)]

; === Andocken der Fenster und gleichzeitiges Ausrichten
_GUIDock_DockWindow($aGUI, $aAlign)

; === oder erst nur GUI's docken und dann einzeln ausrichten:
;~ _GUIDock_DockWindow($aGUI)
;~ _GUIDock_SetAlignment($gui2, BitOR($_GUI_DOCK_RIGHT,$_GUI_ALIGN_RIGHTorBOTTOM))
;~ _GUIDock_SetAlignment($gui3, BitOR($_GUI_DOCK_LEFT,$_GUI_ALIGN_LEFTorTOP))
;~ _GUIDock_SetAlignment($gui4, BitOR($_GUI_DOCK_BOTTOM,$_GUI_ALIGN_LEFTorTOP))


While True
    Switch GUIGetMsg()
		Case -3
            Exit
		Case $btUndock
			; === einzelnes Fenster UnDocken
			_GUIDock_UnDockWindow($gui4)
			WinSetTitle($gui4, '', "Ich bin UNgedockt.")
			GUICtrlSetState($btUndock, $GUI_DISABLE)
			GUICtrlSetState($btRedock, $GUI_ENABLE)
		Case $btRedock
			; === einzelnes Fenster Docken
			_GUIDock_DockWindow($gui4, BitOR($_GUI_DOCK_BOTTOM,$_GUI_ALIGN_CENTER))
			WinSetTitle($gui4, '', "Ich bin gedockt UNTEN-MITTE")
			GUICtrlSetState($btUndock, $GUI_ENABLE)
			GUICtrlSetState($btRedock, $GUI_DISABLE)
    EndSwitch
WEnd
