#include <GuiMenu.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include "_GUICtrlMenu_CreateBitmap.au3"

Opt('MustDeclareVars', 1)
Global $iMemo

_Main()

Func _Main()
	Local $hGUI, $hFile, $hEdit, $hHelp, $hMain
	Local Enum $idNew = 1000, $idOpen, $idSave, $idExit, $idCut, $idCopy, $idPaste, $idAbout
	#region
	; Create GUI
	$hGUI = GUICreate("Menu", 400, 300)

	; 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)

	; 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)

	; Create Help menu
	$hHelp = _GUICtrlMenu_CreateMenu()
	_GUICtrlMenu_InsertMenuItem($hHelp, 0, "&About", $idAbout)

	; 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)

	; Set window menu
	_GUICtrlMenu_SetMenu($hGUI, $hMain)

	; Create memo control
	$iMemo = GUICtrlCreateEdit("", 2, 2, 396, 276, 0)
	GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
	GUISetState()
	#endregion
	Local $hBMP_File_New = _GUICtrlMenu_CreateBitmap(StringReplace(@AutoItExe, "autoit3.exe", "Examples\GUI\Torus.png"), 0, 32, 32)
	; Set New menu item to have a bitmap
	_GUICtrlMenu_SetItemBmp($hFile, 0, $hBMP_File_New)
	MemoWrite("Item bitmap handle: 0x" & Hex(_GUICtrlMenu_GetItemBmp($hFile, 0)))

	Local $hBMP_File_Open = _GUICtrlMenu_CreateBitmap(@SystemDir  & "\Shell32.dll", 4, 32, 32)
	; Set New menu item to have a bitmap
	_GUICtrlMenu_SetItemBmp($hFile, 1, $hBMP_File_Open)
	MemoWrite("Item bitmap handle: 0x" & Hex(_GUICtrlMenu_GetItemBmp($hFile, 1)))

	Local $hBMP_File_Save = _GUICtrlMenu_CreateBitmap(@SystemDir  & "\Shell32.dll", 6, 32, 32)
	; Set New menu item to have a bitmap
	_GUICtrlMenu_SetItemBmp($hFile, 2, $hBMP_File_Save)
	MemoWrite("Item bitmap handle: 0x" & Hex(_GUICtrlMenu_GetItemBmp($hFile, 2)))

	Local $hBMP_File_Quit = _GUICtrlMenu_CreateBitmap(@SystemDir  & "\Shell32.dll", 27, 32, 32)
	; Set New menu item to have a bitmap
	_GUICtrlMenu_SetItemBmp($hFile, 4, $hBMP_File_Quit)
	MemoWrite("Item bitmap handle: 0x" & Hex(_GUICtrlMenu_GetItemBmp($hFile, 4)))

	; Loop until user exits
	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	_WinAPI_DeleteObject($hBMP_File_New)
	_WinAPI_DeleteObject($hBMP_File_Open)
	_WinAPI_DeleteObject($hBMP_File_Save)
	_WinAPI_DeleteObject($hBMP_File_Quit)
EndFunc   ;==>_Main

; Write message to memo
Func MemoWrite($sMessage)
	GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite