Здесь рассмотрены несколько основных функций для работы с меню. Но так
как Delphi предоставляет достаточно удобные средства для работы с меню,
здесь не рассматриваются вопросы о РЕАКЦИИ программы на выбор пунктов
ГЛАВНОГО меню, зато рассматривается обработка сообщений от меню
системного.
Дескриптор меню HMENU - это уникальный номер меню в системе. В файле windows.pas тип HMENU определен так:
type HMENU = Integer;
Функция GetMenu
Синтаксис function GetMenu(hWnd: HWND): HMENU;
Возвращает дескриптор меню или нуль (если у окна нет меню).
hWnd - дескриптор того окна, дескриптор меню которого вы хотите получить.
Функция SetMenu
Синтаксис function SetMenu(hWnd: HWND; hMenu: HMENU): BOOL;
Устанавливает ГЛАВНОЕ новое меню у заданного окна. Возвращает True, если всё прошло удачно. После выполнения этой функции строку меню нужно перерисовать функцией DrawMenuBar
hWnd - Дескриптор окна.
hMenu - Дескриптор меню, которым вы хотите заменить меню окна, заданного описателем hWnd.
Функция DrawMenuBar
Синтаксис function DrawMenuBar(hWnd: HWND): BOOL;
Перерисовывает строку меню окна.
hWnd - Дескриптор окна.
Функция GetSystemMenu
Синтаксис function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU;
Возвращает дескриптор системного меню окна.
hWnd - Дескриптор окна, системное меню которого необходимо прлучить.
bRevert - Булевское значение:
True - Будет восстановлен первоначальный вид
системного меню. Все изменения полученного дескриптора меню будут
проигнорированы. Применяется для отмены изменений в системном меню.
False - Изменяя полученный дескриптор, можно менять само системное меню.
Функция CreateMenu
Синтаксис function CreateMenu: HMENU;
Создает новый пустой дескриптор меню.
Функция CreatePopupMenu
Синтаксис function CreatePopupMenu: HMENU;
Создает дескриптор всплывающего меню.
Обратите внимание:
ВСПЛЫВАЮЩЕЕ [POPUP] МЕНЮ В ПОНИМАНИИ WINDOWS И Delphi РАЗНЫЕ ВЕЩИ.
В Windows popup меню - это меню которое связано с другим пунктом меню
(который отмечается треугольничком справа от текста пункта) и
появляется только в то случае, когда пользователь выбрал этот самый
пункт с треугльничком (другими словами popup меню в Windows - это
подменю).
В Delphi popup меню - Это меню, которое может "Всплывать" в любой точке экрана
Функция DestroyMenu
Синтаксис function DestroyMenu(hMenu: HMENU): BOOL;
Уничтожает дескриптор меню.
hMenu - Уничтожаемого дескриптора меню.
Функция GetMenuItemCount
Синтаксис function GetMenuItemCount(hMenu: HMENU): Integer;
Возвращает количиство пунктов меню hMenu.
Функция CheckMenuItem
Синтаксис function CheckMenuItem(hMenu: HMENU; uIDCheckItem, uCheck: UINT): DWORD;
Помечает пункт меню или снимает пометку (пометка в виде галочки).
hMenu - дескриптор меню.
uIDCheckItem - ID пункта меню.
uCheck - Комбинация флагов mf_checked, mf_unchecked, mf_bycommand, mf_byposition. Функция CheckMenuRadioItem
Синтаксис function CheckMenuRadioItem(hMenu: HMENU; First, Last, Check, Flags: UINT): BOOL;
Помечает или снимает пометку пункта меню из группы (Пометка в виде точки, действует как переключатель).
hMenu - дескриптор меню.
First - Номер первого пункта меню из группы.
Last - Номер последнего пункта меню из группы.
Check - Номер помечаемого элемента (при этом пометка у остальных пунктов из группы пометка сбрасывается).
Flags - Должен быть - mf_byposition. Функция EnableMenuItem
Синтаксис function EnableMenuItem(hMenu: HMENU; uIDEnableItem, uEnable: UINT): BOOL;
Делает пункт меню доступным или недоступным.
hMenu - дескриптор меню.
uIDEnableItem - ID пункта меню.
uEnable - Комбинация флагов mf_byposition, mf_bycommand, mf_grayed, mf_enabled. Функция Menu