Legeiich mit GUICtrlSetBkColor für Buttons eine Hintergrundfarbe fest, so erhält der erste Button den Tastatur-Focus.
Kein Button soll aber den Focus besitzen. Was kann ich dagegen tun?
Beispiel:
Legeiich mit GUICtrlSetBkColor für Buttons eine Hintergrundfarbe fest, so erhält der erste Button den Tastatur-Focus.
Kein Button soll aber den Focus besitzen. Was kann ich dagegen tun?
Beispiel:
Legeiich mit GUICtrlSetBkColor für Buttons eine Hintergrundfarbe fest, so erhält der erste Button den Tastatur-Focus.
Das hat nichts mit GUICtrlSetBkColor zu tun, sondern damit, dass Windows standardmäßig immer dem ersten Button den Eingabe-Fokus zuweist.
Benutze einen Dummy-Button oder ein anderes Input-Controlelement, um den Fokus dorthin zu legen:
#include <GuiButton.au3>
#include <GUIConstantsEx.au3>
GUICreate("My GUI Button", 300, 200, 0, @DesktopHeight / 2)
Global $Dummy = GUICtrlCreateButton("", -2, -2, 0, 0)
Opt("GUICoordMode", 2)
Global $Button_1 = GUICtrlCreateButton("ja", 10, 30, 100)
$yy = _GUICtrlButton_GetFocus($Button_1)
GUICtrlSetBkColor(-1, 0xFEFE00)
$yyy = _GUICtrlButton_GetFocus($Button_1)
Global $Button_2 = GUICtrlCreateButton("nein", 0, -1)
$zz = _GUICtrlButton_GetFocus($Button_2)
GUICtrlSetBkColor(-1, 0xFEFE00)
GUISetState()
;~ _GUICtrlButton_SetFocus($Dummy)
$yyyy = _GUICtrlButton_GetFocus($Button_1)
$zzzz = _GUICtrlButton_GetFocus($Button_2)
MsgBox(0, "", "$yy::" & $yy & " $yyy:: " & $yyy & " $yyyy:: " & $yyyy & " $zzzz:: " & $zzzz)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
Alles anzeigen
Ich glaube das liegt nicht an BkColor, sondern an GuiSetState(). Was man dagegen tun kann weil ich leider auch nicht...
Ggf. ist es auch nicht möglich ein Fenster ohne irgendeinen Fokus anzuzeigen.
Edit: Da war Oscar schneller und da gibt es sogar eine Lösung
#include <GuiButton.au3>
#include <GUIConstantsEx.au3>
GUICreate("My GUI Button",300,200,0,@DesktopHeight/2)
Opt("GUICoordMode", 2)
Global $Button_1 = GUICtrlCreateButton("ja", 10, 30, 100)
$yy=_GUICtrlButton_GetFocus($Button_1 )
Global $Button_2 = GUICtrlCreateButton("nein", 0, -1)
$zz=_GUICtrlButton_GetFocus($Button_2 )
GUISetState() ; wenn man das hier wegkommentiert hat niemand den Fokus
$yyyy=_GUICtrlButton_GetFocus($Button_1 )
$zzzz=_GUICtrlButton_GetFocus($Button_2 )
MsgBox(0,"","$yy::"&$yy&" $zz:: "&$zz&" $yyyy:: "&$yyyy&" $zzzz:: "&$zzzz)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
Alles anzeigen
M
Das ist unabhängig von SetColor.
Das erste auf der GUI erstellte Control, dass einen Fokus erhalten kann, bekommt diesen automatisch. (Button, Input, Edit).
Ich umgehe das, indem ich einen Button 1x1 Pixel groß außerhalb des sichtbaren GUI Bereiches (x: -2, y: -2) als erstes Control erstelle.
Ehrlich gesagt weißch jetzt auch icht mehr, wie ich darauf gekommen bin, dass es am GUICtrlSetBkColor liegt.
Aber das mit dem Dummy-Button ist eine gute Idee.
Vielen Dank für eure Hilfe!