;-- TIME_STAMP   2018-05-26 09:52:06   v 0.1

#Region    ;************ Includes ************
#Include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <_CheckWinPos.au3>
#EndRegion ;************ Includes ************

Global $g_iSleep = 1000

_Example1() ; verschoben: nein
_Example2() ; verschoben: ja
_Example3() ; verschoben: ja
_Example4() ; verschoben: ja
_Example5() ; verschoben: ja, ja, ja, ja

Func _Example1()
	Local $tWindowPlacement, $hGUI = GUICreate('CheckWinPos Demo 1', 800, 800, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_WINDOWEDGE)
	GUISetState(@SW_MAXIMIZE)
;~ 	GUISetState()

	GUISetBkColor(0xFF0000)
	$tWindowPlacement = _WinAPI_GetWindowPlacement($hGUI)
	ConsoleWrite('> Demo 1' & @CRLF)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	Sleep($g_iSleep)
	$iCheck = _CheckWinPos($hGUI, @SW_RESTORE, True, True, True)
	ConsoleWrite("- Debug line" & @TAB & @ScriptLineNumber & "   var: $iCheck --> " & $iCheck & @CRLF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @CRLF)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	ConsoleWrite(@CRLF)
	GUISetBkColor(0x0000FF)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc
Func _Example2()
	Local $tWindowPlacement, $hGUI = GUICreate('CheckWinPos Demo 2', 800, 800, -200, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_WINDOWEDGE)
	GUISetState()

	GUISetBkColor(0xFF0000)
	$tWindowPlacement = _WinAPI_GetWindowPlacement($hGUI)
	ConsoleWrite('> Demo 2' & @CRLF)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	Sleep($g_iSleep)
	$iCheck = _CheckWinPos($hGUI, @SW_RESTORE, True, True, True)
	ConsoleWrite("- Debug line" & @TAB & @ScriptLineNumber & "   var: $iCheck --> " & $iCheck & @CRLF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @CRLF)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	ConsoleWrite(@CRLF)
	GUISetBkColor(0x0000FF)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc
Func _Example3()
	Local $tWindowPlacement, $hGUI = GUICreate('CheckWinPos Demo 3', 800, 800, -2120, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_WINDOWEDGE)
	GUISetState()

	GUISetBkColor(0xFF0000)
	$tWindowPlacement = _WinAPI_GetWindowPlacement($hGUI)
	ConsoleWrite('> Demo 3' & @CRLF)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	Sleep($g_iSleep)
	$iCheck = _CheckWinPos($hGUI, @SW_RESTORE, True, True, True)
	ConsoleWrite("- Debug line" & @TAB & @ScriptLineNumber & "   var: $iCheck --> " & $iCheck & @CRLF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @CRLF)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	ConsoleWrite(@CRLF)
	GUISetBkColor(0x0000FF)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc
Func _Example4()
	Local $tWindowPlacement, $hGUI = GUICreate('CheckWinPos Demo 4', 800, 800, -1930, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_WINDOWEDGE)
	GUISetState()
	GUISetBkColor(0xFF0000)
	Sleep($g_iSleep)
	GUISetState(@SW_MINIMIZE)

	$tWindowPlacement = _WinAPI_GetWindowPlacement($hGUI)
	ConsoleWrite('> Demo 4' & @CRLF)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	Sleep($g_iSleep)
	$iCheck = _CheckWinPos($hGUI, @SW_RESTORE, True, True, True)
	ConsoleWrite("- Debug line" & @TAB & @ScriptLineNumber & "   var: $iCheck --> " & $iCheck & @CRLF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @CRLF)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	ConsoleWrite(@CRLF)
	GUISetBkColor(0x0000FF)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc
Func _Example5()
	Local $tWindowPlacement, $hGUI = GUICreate('CheckWinPos Demo 5', 800, 800, -1, -300, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_WINDOWEDGE)
	GUISetState()

	GUISetBkColor(0xFF0000)
	$tWindowPlacement = _WinAPI_GetWindowPlacement($hGUI)
	ConsoleWrite('> Demo 5' & @CRLF)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	Sleep($g_iSleep)
	GUISetState(@SW_HIDE)
	$iCheck = _CheckWinPos($hGUI, @SW_RESTORE, True, True, True)
	ConsoleWrite("- Debug line" & @TAB & @ScriptLineNumber & "   var: $iCheck --> " & $iCheck & @CRLF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @CRLF)
;~ *********************************************************************************************
	GUISetState(@SW_SHOW) ; Fenster wird angezeigt, Farbe bleibt aber 0xFF0000, ohne @SW_SHOW!!!
;~ *********************************************************************************************
	GUISetBkColor(0x0000FF)
	Sleep($g_iSleep)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	ConsoleWrite(@CRLF)

	Sleep($g_iSleep)
	GUISetBkColor(0xFF0000)
	WinMove($hGUI, '', -200, Default)
	Sleep($g_iSleep)
	$iCheck = _CheckWinPos($hGUI, @SW_RESTORE, True, True, True)
	ConsoleWrite("- Debug line" & @TAB & @ScriptLineNumber & "   var: $iCheck --> " & $iCheck & @CRLF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @CRLF)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	GUISetBkColor(0x0000FF)
	Sleep($g_iSleep)
	ConsoleWrite(@CRLF)

	Sleep($g_iSleep)
	WinMove($hGUI, '', -2100, Default)
	GUISetBkColor(0xFF0000)
	Sleep($g_iSleep)
	$iCheck = _CheckWinPos($hGUI, @SW_MAXIMIZE, True, True, True)
	ConsoleWrite("- Debug line" & @TAB & @ScriptLineNumber & "   var: $iCheck --> " & $iCheck & @CRLF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @CRLF)
	GUISetBkColor(0x0000FF)
	Sleep($g_iSleep)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	ConsoleWrite(@CRLF)

	Sleep($g_iSleep)
	GUISetState(@SW_RESTORE)
	GUISetBkColor(0x00FF00)
	Sleep($g_iSleep)
	ConsoleWrite('! WinMove($hGUI, '', -200, -200) = ' & WinMove($hGUI, '', -200, -200)  & @CRLF)
	GUISetBkColor(0xFF0000)
	Sleep($g_iSleep)
	$iCheck = _CheckWinPos($hGUI, @SW_SHOW, True, True, True)
	ConsoleWrite("- Debug line" & @TAB & @ScriptLineNumber & "   var: $iCheck --> " & $iCheck & @CRLF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @CRLF)
	GUISetBkColor(0x0000FF)
	Sleep($g_iSleep)
	__PrintWindowPlacement('$tWindowPlacement', $tWindowPlacement)
	ConsoleWrite(@CRLF)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc

Func __RectToArray(ByRef $aRECT, ByRef $tRECT)
	$aRECT = _WinAPI_GetPosFromRect($tRECT)
EndFunc   ;==>__RectToArray

Func __PrintPos($sName, $aPos)
	ConsoleWrite(StringFormat('%-32s =    X: %5i,   Y: %5i,     W: %5i,      H: %5i\r', $sName, $aPos[0], $aPos[1], $aPos[2], $aPos[3]))
EndFunc   ;==>__PrintPos

Func __PrintPoint($sName, $tPoint)
	ConsoleWrite(StringFormat('%-32s =    X: %5i,   Y: %5i\r', $sName, DllStructGetData($tPoint, 'X'), DllStructGetData($tPoint, 'Y')))
EndFunc   ;==>__PrintPoint

Func __PrintRect($sName, $tRECT)
	ConsoleWrite(StringFormat('%-32s = Left: %5i, Top: %5i, Right: %5i, Bottom: %5i\r', _
		$sName, DllStructGetData($tRECT, 'Left'), DllStructGetData($tRECT, 'Top'), DllStructGetData($tRECT, 'Right'), DllStructGetData($tRECT, 'Bottom')))
EndFunc   ;==>__PrintRect

Func __PrintWindowPlacement($sName, $tWindowPlacement)
	ConsoleWrite(StringFormat('+ %s: length: %i, flags: %i, showCmd: %i, ptMinPosition: %i, %i, ptMaxPosition: %i, %i, Left: %6i, Top: %6i, Right: %6i, Bottom: %6i\n', _
		$sName, DllStructGetData($tWindowPlacement, 'length'), DllStructGetData($tWindowPlacement, 'flags'), DllStructGetData($tWindowPlacement, 'showCmd'), _
		DllStructGetData($tWindowPlacement, 'ptMinPosition', 1), DllStructGetData($tWindowPlacement, 'ptMinPosition', 2), _
		DllStructGetData($tWindowPlacement, 'ptMaxPosition', 1), DllStructGetData($tWindowPlacement, 'ptMaxPosition', 2), _
		DllStructGetData($tWindowPlacement, 'rcNormalPosition', 1), DllStructGetData($tWindowPlacement, 'rcNormalPosition', 2), _
		DllStructGetData($tWindowPlacement, 'rcNormalPosition', 3), DllStructGetData($tWindowPlacement, 'rcNormalPosition', 4)))
EndFunc
