Hallo,
ich danke allen, die mir bisher geholfen haben (i. d. R. peethebee, Xenobiologist, Carsten, daksideofsanta, gtaspider, oliverh, BugFix, AspirinJunkie, Alina <- das bau ich als "Credits" ein!). Wenn ich irgendwie dieses Forum unterstützen kann, sagt mir bitte wie. Ohne Eure Hilfe wäre ich mit AutoIt nicht so weit, wie ich es bin! (Ernsthaft, kein Geschleime!)
Es gibt jedoch noch die ein oder andere Verständnisfrage zur Logik. Zu meiner nächsten Frage erst einmal das Ausgangsscript:
Spoiler anzeigen
#include <GUIConstants.au3>
Opt("GUIOnEventMode", 1)
$GUI1 = GUICreate("GUI1", 200, 200, 0, 0, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX))
GUISetOnEvent($GUI_EVENT_CLOSE, "_GUI_EVENT_CLOSE")
GUIRegisterMsg($WM_GETMINMAXINFO, "MY_WM_GETMINMAXINFO")
GUISetState(@SW_SHOW, $GUI1)
$GUI2 = GUICreate("GUI2", 200, 200, 300, 0, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX))
GUISetOnEvent($GUI_EVENT_CLOSE, "_GUI_EVENT_CLOSE")
GUIRegisterMsg($WM_GETMINMAXINFO, "MY_WM_GETMINMAXINFO")
GUISetState(@SW_SHOW, $GUI2)
While 1
Sleep(1000)
WEnd
Func _GUI_EVENT_CLOSE()
Exit
EndFunc ;==>_GUI_EVENT_CLOSE
Func MY_WM_GETMINMAXINFO($hWnd, $msg, $wParam, $lParam)
If $hWnd = $GUI1 Then
$minmaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam)
DllStructSetData($minmaxinfo, 3, 300) ; width
DllStructSetData($minmaxinfo, 4, @DesktopHeight) ; height
DllStructSetData($minmaxinfo, 5, 0) ; left
DllStructSetData($minmaxinfo, 6, 0) ; top
DllStructSetData($minmaxinfo, 7, 200) ; min X
DllStructSetData($minmaxinfo, 8, 200) ; min Y
DllStructSetData($minmaxinfo, 9, 200) ; max X
DllStructSetData($minmaxinfo, 10, @DesktopHeight) ; max Y
Return 0
Else
$minmaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam)
DllStructSetData($minmaxinfo, 3, 500) ; width
DllStructSetData($minmaxinfo, 4, @DesktopHeight) ; height
DllStructSetData($minmaxinfo, 5, 0) ; left
DllStructSetData($minmaxinfo, 6, 0) ; top
DllStructSetData($minmaxinfo, 7, 100) ; min X
DllStructSetData($minmaxinfo, 8, 100) ; min Y
DllStructSetData($minmaxinfo, 9, 200) ; max X
DllStructSetData($minmaxinfo, 10, 400) ; max Y
Return 0
EndIf
EndFunc ;==>MY_WM_GETMINMAXINFO (Thx@Xenobiologist)
Die GUI's laufen im OnEvent_Modus - dass ist jedoch mein Problem, weil ich im MessageLoop-Modus mein Problem durch GUIGetMsg() selber lösen könnte. Der OnEvent-Modus ist jedoch aus Gründen der Messgenauigkeit leider notwendig, da die Verzögerung der GUI_EVENT-Abfrage-Schleife im Message-Loop-Modus bei den Messungen stören könnten (siehe dieser Thread).
Mein Problem: Wenn ich in $GUI1 den Maximize-Button anklicke, sollen $GUI1 und $GUI2 maximiert werden.
Hierzu füge ich in das Script selbstverständlich eine UD-Funktion ein, und lasse beide GUI's beim Klick auf den Maximize-Button diese Funktion ausführen - es ist gewünscht, dass beide GUI's bei einem Klick auf den jeweiligen MAXIMIZE-Button das gleiche tun
Spoiler anzeigen
...
$GUI1 = GUICreate("GUI1", 200, 200, 0, 0, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX))
GUISetOnEvent($GUI_EVENT_CLOSE, "_GUI_EVENT_CLOSE")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "_GUI_EVENT_MAXIMIZE")
GUIRegisterMsg($WM_GETMINMAXINFO, "MY_WM_GETMINMAXINFO")
GUISetState(@SW_SHOW, $GUI1)
$GUI2 = GUICreate("GUI2", 200, 200, 300, 0, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX))
GUISetOnEvent($GUI_EVENT_CLOSE, "_GUI_EVENT_CLOSE")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "_GUI_EVENT_MAXIMIZE")
GUIRegisterMsg($WM_GETMINMAXINFO, "MY_WM_GETMINMAXINFO")
GUISetState(@SW_SHOW, $GUI2)
...
[/autoit] [autoit][/autoit] [autoit]Func _GUI_EVENT_MAXIMIZE()
[/autoit] [autoit][/autoit] [autoit]...
[/autoit] [autoit][/autoit] [autoit]EndFunc;
[/autoit] [autoit][/autoit] [autoit][/autoit]Jetzt möchte ich erreichen, dass bei einem Klick auf den MAXIMIZE-Button
a) die GUI maximiert wird, deren Maximize-Button angeklickt wurde, und
b) die andere GUI ebenfalls maximiert wird.
Wie stelle ich das an? Irgendwie muss ich dem jeweils anderen Fenster ja onevent eine Nachricht übermitteln - ich kenne leider entweder (noch) nicht die richtige Funktion dafür, oder die richtige Notierung.
Wieder einmal Thx im Voraus!