;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
;    _WinAPI_CreateWindowEx.au3
;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Constants.au3>


#include <WinAPI.au3>

Opt ("MustDeclareVars", 1)

Global Const $IDC_STATIC = -1

Global Const $IDC_EDIT   = 101

Global $hInstance


;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
Exit (Example ( ))
;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««


Func Example ( )

	Local $hwndMain
	Local $hwndEdit
	Local $hwndStatic
	Local $hwndButton


	$hInstance = _WinAPI_GetModuleHandle (0)

	; Das Hauptfenster erzeugen
	$hwndMain = GUICreate ( _
				"_WinAPI_CreateWindowEx - Demo", _	; Titel des Fensters
				400, 300, -1, -1, _				; Grösse und Position des Fensters
				BitOR ($WS_OVERLAPPEDWINDOW, $WS_CLIPCHILDREN), _	; Fensterstile
				$WS_EX_WINDOWEDGE, _		; Erweiterte Fensterstile
				0 _						; Handle des Parent-Fensters
				)

	; Eine einfaches Eingabefeld erzeugen
	$hwndEdit = _WinAPI_CreateWindowEx ( _
					0, _					; Erweiterte Fensterstile
					"EDIT", _				; Name der Fensterklasse
					"ENTER drücken...", _	; Text/Titel des Fensters
					BitOR ($WS_TABSTOP, $WS_CHILD, $WS_BORDER, _	; Fensterstile
						  $WS_VISIBLE, $ES_LEFT, $ES_NOHIDESEL), _
					100, 80, 200, 22, _		; Position und Grösse des Fensters
					$hwndMain, _			; Handle des Parent-Fensters
					$IDC_EDIT, _			; Identifizierer des (Kind-)Fensters
					$hInstance, _			; Instanzhandle des Moduls
					0 _					; Anwendungsdefinierter Wert
					)

	; Eine einfaches Textlabel erzeugen
	$hwndStatic = _WinAPI_CreateWindowEx ( _
					0, _					; Erweiterte Fensterstile
					"STATIC", _			; Name der Fensterklasse
					"Text", _				; Text/Titel des Fensters
					BitOR ($WS_TABSTOP, $WS_CHILD, _	; Fensterstile
						  $WS_VISIBLE, $SS_CENTER), _
					160, 140, 80, 18, _		; Position und Grösse des Fensters
					$hwndMain, _			; Handle des Parent-Fensters
					$IDC_STATIC, _			; Identifizierer des (Kind-)Fensters
					$hInstance, _			; Instanzhandle des Moduls
					0 _					; Anwendungsdefinierter Wert
					)

	; Eine einfache Schaltfläche erzeugen
	$hwndButton = _WinAPI_CreateWindowEx ( _
					0, _					; Erweiterte Fensterstile
					"BUTTON", _			; Name der Fensterklasse
					"Text", _				; Text/Titel des Fensters
					BitOR ($WS_TABSTOP, $WS_CHILD, _	; Fensterstile
						  $WS_VISIBLE, $BS_DEFPUSHBUTTON), _
					160, 220, 80, 25, _		; Position und Grösse des Fensters
					$hwndMain, _			; Handle des Parent-Fensters
					$IDOK, _				; Identifizierer des (Kind-)Fensters
					$hInstance, _			; Instanzhandle des Moduls
					0 _					; Anwendungsdefinierter Wert
					)

	; Fensternachrichten registrieren
	GUIRegisterMsg ($WM_COMMAND, "MyWM_COMMAND")

	; Das Hauptfenster anzeigen
	_WinAPI_ShowWindow ($hwndMain, @SW_SHOW)


	While (TRUE)

		Switch (GUIGetMsg ( ))
			Case $GUI_EVENT_CLOSE
				ExitLoop
		EndSwitch
	WEnd


EndFunc

Func MyWM_COMMAND ($hwnd, $message, $wParam, $lParam)

	Local $sMessage


	Switch (_WinAPI_LoWord ($wParam))
		Case $IDC_EDIT
			; Nachrichten des Eingabefeldes
			Switch (_WinAPI_HiWord ($wParam))

				Case $EN_UPDATE
					ContinueCase
				Case $EN_CHANGE
					ConsoleWrite (_WinAPI_GetWindowText ($lParam) & @crlf)
			EndSwitch

		Case $IDOK
			$sMessage = StringFormat ("Die Schaltfläche mit der ID %d wurde gedrückt.", $IDOK)
			_WinAPI_MsgBox ( _
				BitOR ($MB_OK, $MB_ICONASTERISK), _
				"MyWM_COMMAND", _
				$sMessage _
				)
	EndSwitch

	Return $GUI_RUNDEFMSG

EndFunc


;«««««««««««««««««««««««««««««««« End of File «««««««««««««««««««««««««««««««««
