; Holger
; http://www.autoitscript.com/forum/topic/20967-guitray-menu-with-icons-and-colors/
#include <GUIConstantsEx.au3>
#include <ModernMenuRaw.au3>

$hGui = GUICreate("Элемент меню в GUI", 300, 200)

$iFileMenu = GUICtrlCreateMenu("&Файл")
$nSideItem1 = _CreateSideMenu($iFileMenu)
_SetSideMenuText($nSideItem1, "Моё меню")
_SetSideMenuColor($nSideItem1, 0xFFFFFF) ; Устанавливает цвет текста
_SetSideMenuBkColor($nSideItem1, 0x921801) ; Начальный тёмный цвет
_SetSideMenuBkGradColor($nSideItem1, 0xFBCE92) ; Конечный светлый цвет

$iOpenFile = _GUICtrlCreateODMenuItem("Открыть", $iFileMenu, "shell32.dll", -4)
GUICtrlSetState(-1, $GUI_DEFBUTTON)
$iHelpMenu = GUICtrlCreateMenu("?")
_GUICtrlCreateODMenuItem("Сохранить", $iFileMenu, "shell32.dll", -6)
GUICtrlSetState(-1, $GUI_DISABLE)
_GUICtrlCreateODMenuItem("", $iFileMenu, 2) ; создаёт разделительную линию
$iInfoItem = _GUICtrlCreateODMenuItem("Информация", $iHelpMenu, "shell32.dll", -222)
$iRecentFilesMenu = _GUICtrlCreateODMenu("Последние файлы", $iFileMenu, "shell32.dll", -222)
$iExit = _GUICtrlCreateODMenuItem("Выход", $iFileMenu, "shell32.dll", -28)

$iContMenu = GUICtrlCreateContextMenu()
$nSideItem2 = _CreateSideMenu($iContMenu)
_SetSideMenuText($nSideItem2, @ScriptDir & '\_SetSideMenuText.bmp', 0, True, True)

$i_CM_newsubmenu = _GUICtrlCreateODMenu("Новое", $iContMenu, "shell32.dll", -5)
$i_CM_textitem = _GUICtrlCreateODMenuItem("Текст", $i_CM_newsubmenu, "shell32.dll", -71)

$i_CM_OpenFile = _GUICtrlCreateODMenuItem("Открыть", $iContMenu, "shell32.dll", -4)
$i_CM_SaveFile = _GUICtrlCreateODMenuItem("Сохранить", $iContMenu, "shell32.dll", -6)
_GUICtrlCreateODMenuItem("", $iContMenu) ; разделитель

$i_CM_infoitem = _GUICtrlCreateODMenuItem("Информация", $iContMenu, "shell32.dll", -222)

GUISetState()
While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $iOpenFile, $i_CM_OpenFile
			$sFilePath = FileOpenDialog("Выберите файл...", @TempDir, "Все (*.*)")
			If @error <> 1 Then _GUICtrlCreateODMenuItem($sFilePath, $iRecentFilesMenu)
		Case $iInfoItem, $i_CM_infoitem
			MsgBox(64, "Информация", "Пример с иконками", 0, $hGui)
		Case $GUI_EVENT_CLOSE, $iExit
			ExitLoop
	EndSwitch
WEnd
GUIDelete()

Func SetCheckedItem($DefaultItem)
	GUICtrlSetState($iMRadio1, $GUI_UNCHECKED)
	GUICtrlSetState($iMRadio2, $GUI_UNCHECKED)
	GUICtrlSetState($iMRadio3, $GUI_UNCHECKED)
	GUICtrlSetState($iMRadio4, $GUI_UNCHECKED)
	
	GUICtrlSetState($DefaultItem, $GUI_CHECKED)
EndFunc   ;==>SetCheckedItem