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