Guictrlcontextmenu ICON

  • Hey,
    gibt es eine Möglichkeit Icnos in ein ContextMenu zu setzen?
    Ich hab schon mit Guictrlsetstate probiert und die modernmenu.au3 gilt nur für normales Menü bzw. Tray.
    Hat das jemand schonmal hinbekommen?

    Gruß Snify

  • Ne das Control selbst. (aber so sollte es auch aussehen ^^)
    z.B.ich mache eine Listview und adde dann mit guictrlcreatecontextmenu das context menü.
    Und jetzt jedes Item hat ein bestimmtes Icon (oder auch nicht)

  • _GUICtrlMenu_CreatePopup() sowie _GUICtrlMenu_TrackPopupMenu() in kombination mit _GUICtrlMenu_SetItemBmp sollten dir weiterhelfen.

    Spoiler anzeigen
    [autoit]

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

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

    Opt('MustDeclareVars', 1)

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

    Global Enum $idOpen = 1000, $idSave, $idInfo

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

    _Main()

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

    Func _Main()
    Local $hGUI

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

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

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

    ; Register message handlers
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")

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

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

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

    ; Handle WM_COMMAND messages
    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Switch $iwParam
    Case $idOpen
    _WinAPI_ShowMsg ("Open")
    Case $idSave
    _WinAPI_ShowMsg ("Save")
    Case $idInfo
    _WinAPI_ShowMsg ("Info")
    EndSwitch
    EndFunc ;==>WM_COMMAND

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

    ; Handle WM_CONTEXTMENU messages
    Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hMenu

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

    $hMenu = _GUICtrlMenu_CreatePopup ()
    _GUICtrlMenu_InsertMenuItem ($hMenu, 0, "Open", $idOpen)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 1, "Save", $idSave)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "", 0)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "Info", $idInfo)
    _GUICtrlMenu_SetItemBmp($hMenu,0, _WinAPI_CreateSolidBitmap ($hWnd, 0xFF0000, 11, 11))
    _GUICtrlMenu_SetItemBmp($hMenu,1, _WinAPI_CreateSolidBitmap ($hWnd, 0xFFFF00, 11, 11))
    _GUICtrlMenu_SetItemBmp($hMenu,3, _WinAPI_CreateSolidBitmap ($hWnd, 0x00FFFF, 11, 11))
    _GUICtrlMenu_TrackPopupMenu ($hMenu, $iwParam)
    _GUICtrlMenu_DestroyMenu ($hMenu)
    Return True
    EndFunc ;==>WM_CONTEXTMENU

    [/autoit]

    Beispiel aus der Hilfe leicht abgeändert.