_GUICtrlMenu_InsertMenuItemEx
Вставляет новый пункт в указанную позицию в меню
#include <GuiMenu.au3>
_GUICtrlMenu_InsertMenuItemEx($hMenu, $iIndex, ByRef $tMenu [, $fByPos = True])
Параметры
$hMenu | Дескриптор меню |
$iIndex |
Позиция пункта меню, перед которым вставляется новый пункт |
$tMenu | Структура $tagMENUITEMINFO |
$fByPos |
[необязательный] Флаг для идентификации меню: True - $iIndex является позицией пункта, отсчёт от 0 False - $iIndex является идентификатором пункта |
Возвращаемое значение
Успех: | Возвращает True |
Ошибка: | Возвращает False |
См. также
_GUICtrlMenu_InsertMenuItem, $tagMENUITEMINFOСм. также
Искать InsertMenuItem в библиотеке MSDNПример
#include <GuiMenu.au3>
#include <GUIConstantsEx.au3>
_Main()
Func _Main()
Local $hGUI, $hFile, $hEdit, $hHelp, $hMain
Local Enum $idNew = 1000, $idOpen, $idSave, $idExit, $idCut, $idCopy, $idPaste, $idAbout
; Создаёт GUI
$hGUI = GUICreate("Вставляет пункт (структура)", 400, 300)
; Создаёт меню "Файл"
$hFile = _GUICtrlMenu_CreateMenu ()
InsertItem($hFile, 0, 'Новый', $idNew)
InsertItem($hFile, 1, 'Открыть', $idOpen)
InsertItem($hFile, 2, 'Сохранить', $idSave)
InsertItem($hFile, 3, "", 0)
InsertItem($hFile, 4, 'Выход', $idExit)
; Создаёт меню "Правка"
$hEdit = _GUICtrlMenu_CreateMenu ()
InsertItem($hEdit, 0, 'Вырезать', $idCut)
InsertItem($hEdit, 1, 'Копировать', $idCopy)
InsertItem($hEdit, 2, 'Вставить', $idPaste)
; Создаёт меню "Справка"
$hHelp = _GUICtrlMenu_CreateMenu ()
InsertItem($hHelp, 0, 'О программе', $idAbout)
; Создаёт главное меню
$hMain = _GUICtrlMenu_CreateMenu ()
InsertItem($hMain, 0, 'Файл', 0, $hFile)
InsertItem($hMain, 1, 'Правка', 0, $hEdit)
InsertItem($hMain, 2, 'Справка', 0, $hHelp)
; Устанавливает главное меню окна
_GUICtrlMenu_SetMenu ($hGUI, $hMain)
GUISetState()
; Цикл выполняется, пока окно не будет закрыто
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc ;==>_Main
; Вставляет пункт меню (трудный способ)
Func InsertItem($hMenu, $iIndex, $sText, $iCmdID = 0, $hSubMenu = 0)
Local $tMenu, $tText
$tMenu = DllStructCreate($tagMENUITEMINFO)
DllStructSetData($tMenu, "Size", DllStructGetSize($tMenu))
DllStructSetData($tMenu, "Mask", BitOR($MIIM_ID, $MIIM_STRING, $MIIM_SUBMENU))
DllStructSetData($tMenu, "ID", $iCmdID)
DllStructSetData($tMenu, "SubMenu", $hSubMenu)
If $sText = "" Then
DllStructSetData($tMenu, "Mask", $MIIM_FTYPE)
DllStructSetData($tMenu, "Type", $MFT_SEPARATOR)
Else
DllStructSetData($tMenu, "Mask", BitOR($MIIM_ID, $MIIM_STRING, $MIIM_SUBMENU))
$tText = DllStructCreate("wchar Text[" & StringLen($sText) + 1 & "]")
DllStructSetData($tText, "Text", $sText)
DllStructSetData($tMenu, "TypeData", DllStructGetPtr($tText))
EndIf
_GUICtrlMenu_InsertMenuItemEx ($hMenu, $iIndex, $tMenu)
EndFunc ;==>InsertItem