Doppelklick innerhalb einer GUI

  • Mal eine hoffentlich kurze Frage:

    Ich nutze in meiner GUI GUICtrlCreateTreeViewItem
    Wenn auf ein solches Item ein Doppelklick mit der Maus ausgeführt wird, soll unter anderem der Inhalt eines Edit gelesen werden.
    Gibt es eine Möglichkeit, den Doppelklick zu "bemerken" ?

    Hab zwar IsPressed("01") für die linke Maustaste gefunden aber damit dürfte er ja bereits bei einem Klick reagieren

  • Du kannst machen, dass wenn IsPressed("01") gedrückt wird, dass dann eine Zeit lang auf einen Zweiten Klick gewartet.. wird wenn der dann kommt dann öffnest du es..

  • So habe ich es immer gemacht :

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 109, 56, 192, 122)
    $Button1 = GUICtrlCreateButton("Button1", 8, 16, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    GUICtrlDelete ($Button1)
    $Button2 = GUICtrlCreateButton("Button1", 8, 16, 75, 25, $WS_GROUP)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button2
    msgbox(64,"Test","Dies ist ein Test")
    EndSwitch
    WEnd
    EndSwitch
    WEnd

    [/autoit]

    Naja funzt aber geht bestimmt auch anders und meins ist immer schlecht ;(

  • Du kannst machen, dass wenn IsPressed("01") gedrückt wird, dass dann eine Zeit lang auf einen Zweiten Klick gewartet.. wird wenn der dann kommt dann öffnest du es..

    Hm.. und wie soll ich das machen ?


    So habe ich es immer gemacht :
    Naja funzt aber geht bestimmt auch anders und meins ist immer schlecht ;(

    Dank dir aber hab ich was an den Augen oder steht bei dir im Quelltext nirgends was von doppelten Mausklicks ? 8|

  • So?

    Spoiler anzeigen
    [autoit]

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

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

    $Form1 = GUICreate("Form1", 633, 447, 192, 124)
    $TreeView = GUICtrlCreateTreeView(128, 120, 385, 281)
    $1=GUICtrlCreateTreeViewItem("1", $treeview)
    $2=GUICtrlCreateTreeViewItem("2", $treeview)
    GUICtrlCreateTreeViewItem("a", $1)
    GUICtrlCreateTreeViewItem("b", $2)
    GUICtrlCreateTreeViewItem("c", $2)

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

    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $TreeView
    Select
    Case $event = $NM_DBLCLK
    MsgBox(0,"","Doppelklick")
    EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc

    [/autoit]
  • Kommt mir aus dem englischen Forum bekannt vor. Wenn ich mich nicht ganz irre, fehlt in deiner Version aber die Definition von $NM_DBLCLK bzw. damit dem doppelten Mausklick ?!