Guten Tag.
Sorry wegen dem Titel - ich kann das Problem leider gar nicht mit einem Einzeiler beschreiben.
Es sieht folgendermaßen aus:
Im Script benutze ich einen Accelerator, um eine Funktion aufzurufen, in der ein Control versteckt und deaktiviert wird ($GUI_HIDE + $GUI_DISABLE).
Das Problem ist dann, dass danach die WM_MOUSEWHEEL-Funktion nicht mehr funktioniert, bis das Fenster minimiert und wieder geöffnet wird.
Nutze ich dafür keinen Accelerator, sondern einen gewöhnlichen Button o. ä., dann gibt es das Problem nicht.
Es funktioniert auch, wenn ich das Control lediglich verstecke ($GUI_HIDE) - aber für das Endprodukt kommen diese beiden Optionen nicht in Frage...
Der Wunsch ist also, per Accelerator das Control verstecken und deaktivieren und danach trotzdem noch das Mausrad nutzen zu können.
Spoiler anzeigen
Hier ist ein stark vereinfachtes Script. Bekommt das jemand zum Laufen?
Global $h_Gui, $h_Input, $h_Dummy
Global $a_Accel[1][2] = [['{enter}']]
$h_Gui = GUICreate('')
$h_Input = GUICtrlCreateInput('', 10, 10, 100, 20)
$h_Dummy = GUICtrlCreateDummy()
$a_Accel[0][1] = $h_Dummy
GUISetAccelerators($a_Accel, $h_Gui)
GUISetState(@SW_SHOW, $h_Gui)
GUIRegisterMsg(0x020A, 'WM_MOUSEWHEEL') ; $WM_MOUSEWHEEL = 0x020A
While True
Switch GUIGetMsg()
Case -3
Exit
Case $h_Dummy
; $GUI_HIDE = 32
; $GUI_DISABLE = 128
GUICtrlSetState($h_Input, 160)
;GUICtrlSetState($h_Input, 32)
EndSwitch
WEnd
Func WM_MOUSEWHEEL($h_Wnd, $n_Msg, $w_Param)
If $w_Param = 0x00780000 Then
ConsoleWrite('up' & @CRLF)
ElseIf $w_Param = 0xFF880000 Then
ConsoleWrite('down' & @CRLF)
EndIf
EndFunc ;==> WM_MOUSEWHEEL
LG