Hallo Zusammen,
kämpfe gerade mit meiner GUI und habe vermutlich eine Kleinigkeit übersehen oder mache einen Denkfehler wo ich Eure Hilfe bräuchte.
Ich habe eine MainGui. In der gibt es verschiedene Buttons die entweder eine MsgBox, InputBox oder FileOpenDialog öffnen.
Mein Wunsch ist es nun, nicht die Dialog zentriert am Bildschirm zu haben, sondern immer in der Nähe der MainGUI. Wenn ich z.B. die Gui nach oben rechts am Bildschirm verschiebe, sollen sich da auch die Dialoge öffnen.
Die Hilfe ist da nur bedingt hilfreich, denn beim FileOpneDialog steht:
"hwnd [optional] The window handle to use as the parent for this dialog."
Daraus habe ich die "Beziehung" zwischen Dialog und Gui abgeleitet.
Interessanterweise funktioniert das so, wie ich es will beim FileOpenDialog, wenn ich meinen 2. Knopf von oben drücke. Also er öffnet mir den Dialog dort, wo sich meine Main-GUI befindet.
Drücke ich aber nach dem Start meines Testprogramms den obersten Button zuerst, dann erscheint der Dialog in der oberen linken Bildschirmecke, auch wenn ich danach den 2. Knopf drücke.
Bei MsgBox oder InputBox hat es keinerlei Auswirkung, ob ich als hwnd meine MainGui angeben oder nicht. Die wird leider immer Bildschirmmittig platziert.
Was mache ich falsch, oder geht das garnicht, was ich machen will, oder wofür ist das hwnd da? Oder ist es gar ein Bug?
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
; Opt('CaretCoordMode', 2)
Opt('GUICloseOnESC', 0)
Global $MyMainGUI, $MyButton1, $MyButton2, $MyButton3, $MyButton4
Local $GuiMsg
CreateMyGui()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
$GuiMsg = GUIGetMsg()
Switch $GuiMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $MyButton1
FileOpenDialog("Datei auswählen", @WorkingDir & "\", "alle (*.*)", 0, "")
Case $MyButton2
FileOpenDialog("Datei auswählen", @WorkingDir & "\", "alle (*.*)", 0, "", $MyMainGUI)
Case $MyButton3
InputBox("Testfrage", "Einfach mal nen Test eingeben", "nix", "", 150, 50, -1, -1, 15, $MyMainGUI)
Case $MyButton4
MsgBox(0, "Meldungsbox", "Ist die Box da, wo sie sein soll?", 15, $MyMainGUI)
EndSwitch
WEnd
GUIDelete($MyMainGUI)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#region funktionsdefinitionen
[/autoit] [autoit][/autoit] [autoit]Func CreateMyGui()
[/autoit] [autoit][/autoit] [autoit]$MyMainGUI = GUICreate("My GUI", 400, 200)
[/autoit] [autoit][/autoit] [autoit]$MyButton1 = GUICtrlCreateButton("FileOpenDialog", 10, 10, 150)
$MyButton2 = GUICtrlCreateButton("FileOpenDialog mit hwnd", 10, 40, 150)
$MyButton3 = GUICtrlCreateButton("InputBox mit hwnd", 10, 70, 150)
$MyButton4 = GUICtrlCreateButton("MsgBox mit hwnd", 10, 100, 150)
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>CreateMyGui
[/autoit] [autoit][/autoit] [autoit]#endregion funktionsdefinitionen
[/autoit]Happy computing!
R@iner