Funktion auslösen wenn ein Input-Feld den Fokus erhält

  • Hi.

    Kann mir jemand bitte einen Tipp geben wie eine Funktion ausgelöst werden kann, sobald

    ein Input-Feld (GUICtrlCreateInput) den Fokus erhält?

    Mit _GetFocus lassen sich ja bei Änderungen Events auslösen, aber wie bekommen ich es hin,

    dass bereits beim "Klick" in ein Input-Feld eine Aktion ausgelöst wird?


    Ich bin leider zu doof um das per DLL-Calls selbst lösen zu können und eine Lösung mittels Postionsermittlung kommt hier nicht in Frage.


    Freue mich über jeden nützlichen Hinweis.


    Danke im Voraus.


    Gruß.

    zapp

    Einmal editiert, zuletzt von zapp (18. Juli 2011 um 13:39)

    • Offizieller Beitrag

    Ich bin leider zu doof um das per DLL-Calls selbst lösen zu können und eine Lösung mittels Postionsermittlung kommt hier nicht in Frage.


    Weder das Eine noch das Andere brauchst du dazu, sondern: GuiRegisterMsg

    Guckst du:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Form1")
    GUISetOnEvent($GUI_EVENT_CLOSE, '_ende')
    $b = GUICtrlCreateButton('Button', 10, 10, 60, 20)
    $in0 = GUICtrlCreateInput('', 100, 60, 60)
    $in1 = GUICtrlCreateInput('', 100, 90, 60)
    $in2 = GUICtrlCreateInput('', 100, 120, 60)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _ende()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $iCode
    Case $EN_SETFOCUS ; Sent when an edit control receives the keyboard focus
    Switch $hWndFrom
    Case GUICtrlGetHandle($in0)
    ConsoleWrite('Fokus erhalten: Input 0' & @CRLF)
    Case GUICtrlGetHandle($in1)
    ConsoleWrite('Fokus erhalten: Input 1' & @CRLF)
    Case GUICtrlGetHandle($in2)
    ConsoleWrite('Fokus erhalten: Input 2' & @CRLF)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]