Rechtsklickmenü Unterpunkte

  • Hi,

    ich erstelle mit dieser Funktion ein Rechtsklickmenü in einer GUI:

    Spoiler anzeigen
    [autoit]

    Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hMenu
    If $iwParam = $Desktop Then
    $hMenu = _GUICtrlMenu_CreatePopup()
    _GUICtrlMenu_InsertMenuItem($hMenu, 1, "Neu")
    _GUICtrlMenu_InsertMenuItem($hMenu, 2, "Neue Textdatei")
    _GUICtrlMenu_InsertMenuItem($hMenu, 3, "Neuer Ordner")
    _GUICtrlMenu_InsertMenuItem($hMenu, 4, "")
    _GUICtrlMenu_InsertMenuItem($hMenu, 5, "exit")
    _GUICtrlMenu_TrackPopupMenu($hMenu, $iwParam)
    _GUICtrlMenu_DestroyMenu($hMenu)
    EndIf
    Return True
    EndFunc ;==>WM_CONTEXTMENU

    [/autoit]


    Laut Hilfe sollte ich nun so den Menupunkte "Neue Textdatei" und "Neuer Ordner" als Unterpunkte unter dem Menüpunkt neu anlegen könnte:

    Spoiler anzeigen
    [autoit]

    Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hMenu
    If $iwParam = $Desktop Then
    $hMenu = _GUICtrlMenu_CreatePopup()
    _GUICtrlMenu_InsertMenuItem($hMenu, 1, "Neu")
    _GUICtrlMenu_InsertMenuItem($hMenu, 2, "Neue Textdatei",0,1)
    _GUICtrlMenu_InsertMenuItem($hMenu, 3, "Neuer Ordner",0,1)
    _GUICtrlMenu_InsertMenuItem($hMenu, 4, "")
    _GUICtrlMenu_InsertMenuItem($hMenu, 5, "exit")
    _GUICtrlMenu_TrackPopupMenu($hMenu, $iwParam)
    _GUICtrlMenu_DestroyMenu($hMenu)
    EndIf
    Return True
    EndFunc

    [/autoit]

    Nur leider sind die beiden Menüpunkte dann ganz weg.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (26. Februar 2010 um 19:49)

  • Das muss beim $hSubMenu von 1 auf 0:

    [autoit]


    Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hMenu
    If $iwParam = $Desktop Then
    $hMenu = _GUICtrlMenu_CreatePopup()
    _GUICtrlMenu_InsertMenuItem($hMenu, 1, "Neu")
    _GUICtrlMenu_InsertMenuItem($hMenu, 2, "Neue Textdatei",0,0)
    _GUICtrlMenu_InsertMenuItem($hMenu, 3, "Neuer Ordner",0,0)
    _GUICtrlMenu_InsertMenuItem($hMenu, 4, "")
    _GUICtrlMenu_InsertMenuItem($hMenu, 5, "exit")
    _GUICtrlMenu_TrackPopupMenu($hMenu, $iwParam)
    _GUICtrlMenu_DestroyMenu($hMenu)
    EndIf
    Return True
    EndFunc

    [/autoit]
  • Dann sind ei Punkte zwar wieder da, aber nicht als Untermenü vom Menü "Neu".

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    • Offizieller Beitrag
    [autoit]

    Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hMenu,$hNeu
    If $iwParam = $Desktop Then
    $hNeu = _GUICtrlMenu_CreatePopup()
    _GUICtrlMenu_InsertMenuItem($hNeu, 1, "Neue Textdatei",0,0)
    _GUICtrlMenu_InsertMenuItem($hNeu, 2, "Neuer Ordner",0,0)
    $hMenu = _GUICtrlMenu_CreatePopup()
    _GUICtrlMenu_InsertMenuItem($hMenu, 1, "Neu",0,$hNeu)
    _GUICtrlMenu_InsertMenuItem($hMenu, 2, "")
    _GUICtrlMenu_InsertMenuItem($hMenu, 3, "exit")
    _GUICtrlMenu_TrackPopupMenu($hMenu, $iwParam)
    _GUICtrlMenu_DestroyMenu($hMenu)
    EndIf
    Return True
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Schau dir mal das 1.Beispiel von GUICtrlCreateContextMenu an, da kannst du dir mal ansehen wie es auch ohne UDF klappt.
    Meiner Meinung nach ist es mit den Standardbefehlen einfacher als mit den UDF Funktionen.