#include <WinAPI.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>

Example()

Func Example()
	; Aktiviert den Gui OnEvent Mode
	Opt("GUIOnEventMode", 1)

	; Erstellt eine einfache Gui
	Local $hWnd = GUICreate("DllCallAddress Beispiel")

	; Beim schliessen des Fensters, OnClose aufrufen
	GUISetOnEvent($GUI_EVENT_CLOSE, "OnClose")

	; Zeige die Gui
	GUISetState(@SW_SHOWNORMAL, $hWnd)

	; Hole den Pointer zur Windows-Funktion WindowProc().
	Local $pWndProc = _WinAPI_GetWindowLong($hWnd, $GWL_WNDPROC)


	; Sage dem User was passieren wird
	MsgBox(4096, "DllCallAddress Beispiel Nachricht", "When you press OK the test window will close.")

	; Explizit wird ein WM_CLOSE Event generiert und direkt zur WindowProc() weitergegeben.
	; Das sollte in keiner echten Applikation so sein (lieber _SendMessage() nutzen) aber
	; es demonstriert wie man die Funktion nutzt

	DllCallAddress("LRESULT", $pWndProc, "HWND", $hWnd, "UINT", $WM_CLOSE, "WPARAM", 0, "LPARAM", 0)
EndFunc   ;==>Example

Func OnClose()
	GUIDelete(@GUI_WinHandle)
	MsgBox(4096, "DllCallAddress Beispiel Nachricht", "Schliess-Event empfangen. Das Test-Fenster sollte jetzt geschlossen sein")
EndFunc   ;==>OnClose
