mit Koda Form1 und Toolbar1 mit ToolButton1 erstellt __wie gehts weiter ?

  • guten abend,
    ich habe folgende form mit Koda erstellt.


    diese Codezeile = falsch case $ToolBar1 , hier sollte die MsgBox(0,"Button in Toolbar gedrückt ?", $ToolBar1) beim drücken des Button in der Toolbar erscheinen.
    Im Koda habe ich die caption den Button Start genannt, aber es erscheint kein text ?

    sagt mir bitte jemand wie die zweite case anweisung in obigem code lauten muss ?
    ;$ToolBar1 = 0x004D05F4-----------ist das eine adresse ? oder name?
    mit buttons innerhalb der form habe ich das hinbekommen, nur wenn der button in der Tollbar ist, komme ich nicht klar ?(
    danke gruss roland_k

  • Hallo super,
    So würde ich es lösen. Mag sein, dass es da noch bessere Alternativen gibt.

    Spoiler anzeigen
    [autoit]

    #include <GuiToolbar.au3>
    #include <ToolbarConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    Global $iItem
    #region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Form1", 413, 305, 302, 218)
    $ToolBar1 = _GUICtrlToolbar_Create($Form1)
    $hToolbarButton1 = _GUICtrlToolbar_AddButton($ToolBar1, 0, 0)
    $hToolbarButton2 = _GUICtrlToolbar_AddButton($ToolBar1, 0, 0)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY") ; GUIRegisterMsg initialisieren für das WM_NOTIFY Event

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

    While 1
    $nMsg = GUIGetMsg()
    Select
    Case $nMsg = $GUI_EVENT_CLOSE
    ;~ MsgBox(4, "close", $GUI_EVENT_CLOSE)
    Exit
    EndSelect
    WEnd

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

    ; WM_NOTIFY event handler
    Func _WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID, $wParam
    Local $tNMHDR, $event, $hwndFrom, $code, $i_idNew, $dwFlags, $lResult, $idFrom, $i_idOld
    Local $tNMTOOLBAR, $tNMTBHOTITEM
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hwndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $idFrom = DllStructGetData($tNMHDR, "IDFrom")
    $code = DllStructGetData($tNMHDR, "Code")
    Switch $hwndFrom ; NOTIFY EVENT von welchem Control?
    Case $ToolBar1 ; wenn von der Toolbar...
    Switch $code ; welches event genau?
    Case $NM_LDOWN ; Ein Klick?
    Switch _GUICtrlToolbar_GetHotItem($ToolBar1) ; Auf welches item?
    Case 0 ; Erster Knopf
    ToolTip("Erster Knopf gedrückt") ; Keine Funktionen wie MsgBox in GUIRegisterMsg-Funktionen! Das kann zu Komplikationen führen.
    Case 1 ;zweiter Knopf
    ToolTip("Zweiter Knopf gedrückt")
    EndSwitch
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_NOTIFY

    [/autoit]


    Bei einer Toolbar wirst du nicht um WM_Notifiy herumkommen.
    Vielleicht hilft dir das hier auch weiter:
    https://autoit.de/index.php?page=Thread&amp;threadID=16299