Icon für Context-Menü

  • Hi an alle,

    kann man in Context Menüs Icons einbinden?

    sowas wie hier?!?! (siehe anhang)

  • Wenn du sowas meinst schon:

    Spoiler anzeigen
    [autoit]

    #include <GuiMenu.au3>
    #include <GuiConstantsEx.au3>
    #include <WinAPI.au3>

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

    Opt('MustDeclareVars', 1)

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

    Global $iMemo

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

    _Main()

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

    Func _Main()
    Local $hGUI, $hFile, $hEdit, $hHelp, $hMain, $hBmp1, $hBmp2
    Local Enum $idNew = 1000, $idOpen, $idSave, $idExit, $idCut, $idCopy, $idPaste, $idAbout

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

    ; Create GUI
    $hGUI = GUICreate("Menu", 400, 300)

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

    ; Create File menu
    $hFile = _GUICtrlMenu_CreateMenu ()
    _GUICtrlMenu_InsertMenuItem ($hFile, 0, "&New", $idNew)
    _GUICtrlMenu_InsertMenuItem ($hFile, 1, "&Open", $idOpen)
    _GUICtrlMenu_InsertMenuItem ($hFile, 2, "&Save", $idSave)
    _GUICtrlMenu_InsertMenuItem ($hFile, 3, "", 0)
    _GUICtrlMenu_InsertMenuItem ($hFile, 4, "E&xit", $idExit)

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

    ; Create Edit menu
    $hEdit = _GUICtrlMenu_CreateMenu ()
    _GUICtrlMenu_InsertMenuItem ($hEdit, 0, "&Cut", $idCut)
    _GUICtrlMenu_InsertMenuItem ($hEdit, 1, "C&opy", $idCopy)
    _GUICtrlMenu_InsertMenuItem ($hEdit, 2, "&Paste", $idPaste)

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

    ; Create Help menu
    $hHelp = _GUICtrlMenu_CreateMenu ()
    _GUICtrlMenu_InsertMenuItem ($hHelp, 0, "&About", $idAbout)

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

    ; Create Main menu
    $hMain = _GUICtrlMenu_CreateMenu ()
    _GUICtrlMenu_InsertMenuItem ($hMain, 0, "&File", 0, $hFile)
    _GUICtrlMenu_InsertMenuItem ($hMain, 1, "&Edit", 0, $hEdit)
    _GUICtrlMenu_InsertMenuItem ($hMain, 2, "&Help", 0, $hHelp)

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

    ; Set window menu
    _GUICtrlMenu_SetMenu ($hGUI, $hMain)

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

    ; Create memo control
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 276, 0)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUISetState()

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

    ; Set File menu checked/unchecked bitmaps
    $hBmp1 = _WinAPI_CreateSolidBitmap ($hGUI, 0xFF0000, 11, 11)
    $hBmp2 = _WinAPI_CreateSolidBitmap ($hGUI, 0x00FF00, 11, 11)
    _GUICtrlMenu_SetItemBitmaps ($hFile, 0, $hBmp1, $hBmp2)
    _GUICtrlMenu_SetItemBitmaps ($hFile, 1, $hBmp1, $hBmp2)
    _GUICtrlMenu_SetItemBitmaps ($hFile, 2, $hBmp1, $hBmp2)

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

    ; Check Open menu item
    _GUICtrlMenu_CheckMenuItem ($hFile, 1)

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

    ; Show that bitmap handles match
    MemoWrite("Checked handle ......: 0x" & Hex($hBmp1))
    MemoWrite("Unchecked handle ....: 0x" & Hex($hBmp2))
    MemoWrite("Open checked handle .: 0x" & Hex(_GUICtrlMenu_GetItemBmpChecked ($hFile, 0)))
    MemoWrite("Open unchecked handle: 0x" & Hex(_GUICtrlMenu_GetItemBmpUnchecked ($hFile, 0)))

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc ;==>_Main

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

    ; Write message to memo
    Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
    EndFunc ;==>MemoWrite

    [/autoit]
  • das sind aber farbige rechtecke und keine icons?!?! will sowas wie in dem screenshot aus dem ersten post... ist das nicht möglich?

  • such mal hier im forum nach "modernmenu". Denn ich habe so was ähnliches gefragt, das es für menuitem und traymenu war. Bin mir jetzt nicht sich ob es azch für contextmenu geht.

  • vielen dank, funktioniert bestens die udf! bis jetzt noch keine probleme damit!

    eine andere frage... wie kann ich meine dynamisch erstellten menüs wieder löschen, um speicher freizugeben?

    [autoit]


    Func _readProgrammsAndWrite()
    _GUICtrlTreeView_DeleteAll($hTreeView)
    $fileList=_FileListToArray(@ScriptDir & "\Programme\", "*", 2)
    If @error=4 Then
    MsgBox(0, "Fehler", "Keine Programm im Programmverzeichnis gefunden")
    Else
    Local $item[$fileList[0]]
    Local $contextMenue[$fileList[0]]
    Local $contextMenueItem[$fileList[0]]
    For $i=1 To $fileList[0]
    $item[$i-1]=GUICtrlCreateTreeViewItem($fileList[$i], $hTreeView)
    GUICtrlSetOnEvent($item[$i-1], "_getProgrammAndWriteInfos")
    $contextMenue[$i-1]=GUICtrlCreateContextMenu($item[$i-1])
    $contextMenueItem[$i-1]=_GUICtrlCreateODMenuItem("Neue Version erzeugen", $contextMenue[$i-1], "shell32.dll", -55)
    ;$contextMenueItem[$i-1]=GUICtrlCreateMenuItem("Neue Version erzeugen", $contextMenue[$i-1])
    GUICtrlSetOnEvent($contextMenueItem[$i-1], "_createNewVersionFromLast")
    Next
    EndIf
    EndFunc

    [/autoit]