I'm aware of ModernMenu. I only want to change the color.
[ autoit ]
#include <GuiMenu.au3> Local $iMenuItem[1] Local $tPoint, $aPos, $a_iniList, $ContMenu $hGui = GUICreate('My Program', 250, 260) $iCombo = GUICtrlCreateButton('v', 220, 10, 22, 22) GUISetState() While 1 Switch GUIGetMsg() Case $iCombo $ContMenu = GUICtrlCreateContextMenu($iCombo) SetMenuColor(-1, 0xAAFFFF) $a_iniList = StringSplit('item1|item2|item3|item4', '|') ReDim $iMenuItem[$a_iniList[0] + 1] $iMenuItem[0] = $a_iniList[0] For $i = 1 To $a_iniList[0] $iMenuItem[$i] = GUICtrlCreateMenuItem($a_iniList[$i], $ContMenu) Next $aPos = ControlGetPos($hGui, "", $iCombo) $tPoint = DllStructCreate("int X;int Y") DllStructSetData($tPoint, "X", $aPos[0] + $aPos[2]) DllStructSetData($tPoint, "Y", $aPos[1] + $aPos[3]) _WinAPI_ClientToScreen($hGui, $tPoint) _GUICtrlMenu_TrackPopupMenu(GUICtrlGetHandle($ContMenu), $hGui, DllStructGetData($tPoint, "X"), DllStructGetData($tPoint, "Y"), 2) $tPoint = 0 GUICtrlDelete($ContMenu) Case -3 Exit EndSwitch WEnd Func SetMenuColor($nMenuID, $nColor) Local $tInfo $tInfo = DllStructCreate($tagMENUINFO) DllStructSetData($tInfo, 1, DllStructGetSize($tInfo)) DllStructSetData($tInfo, 2, BitOR($MIM_APPLYTOSUBMENUS, $MIM_BACKGROUND)) DllStructSetData($tInfo, 5, _WinAPI_CreateSolidBrush($nColor)) _GUICtrlMenu_SetMenuInfo(GUICtrlGetHandle($nMenuID), $tInfo) EndFunc ;==>SetMenuColor