Возвращает идентификатор меню, который соответствует системному литералу для системного меню или заголовка меню (menu title).
MENUID _MenuId(long literal) long literal; /* Системный литерал. */ |
Замечания
Литералы определены в включаемом файле PRO_EXT.H.
Для дальнейшей информации о том, как создать API библиотеку и интегрировать ее с Visual FoxPro, смотрите Подключение Visual FoxPro API.
Пример
Следующий пример добавляет заголовок в системное меню. Затем присоединяет к нему выпадающее меню, состоящее из двух пунктов.
Процедура _MenuId( ) используется для получения MENUID системного меню.
Visual FoxPro Код
![]() | |
---|---|
SET LIBRARY TO MENUID |
C Код
![]() | |
---|---|
#include <pro_ext.h> MENUID SysMenuId; MENUID PopupId; ITEMID PadId; void putLong(long n) { Value val; val.ev_type = 'I'; val.ev_long = n; val.ev_width = 10; _PutValue(&val); } FAR onSelection(long menuId, long itemId) { _PutStr("\nitemId = "); putLong(itemId); } void FAR StartUp() { ITEMID Bar1Id; ITEMID Bar2Id; int Error; // Добавим новый заголовок меню в SYSMENU. SysMenuId = _MenuId(_SYSMENU); PadId = _GetNewItemId(SysMenuId); if (_NewItem(SysMenuId, PadId, _LASTITEM, "\\<Новый заголовок меню")) { _Error(623); /* "Menu item cannot be defined." */ } // Определить меню. PopupId = _GetNewMenuId(); if (Error = _NewMenu(MPOPUP, PopupId)) { _Error(-Error); } Bar1Id = _GetNewItemId(PopupId); // ОСТОРОЖНО: Вызовите _NewItem() перед следующим вызовом _GetNewItemId(). if (_NewItem(PopupId, Bar1Id, _LASTITEM, "\\<1ый пункт")) { _Error(623); /* "Menu item cannot be defined." */ } Bar2Id = _GetNewItemId(PopupId); if (_NewItem(PopupId, Bar2Id, _LASTITEM, "\\<2ой пункт")) { _Error(623); /* "Menu item cannot be defined." */ } // присоединить меню к новому заголовку меню _SetItemSubMenu(SysMenuId, PadId, PopupId); // Установить действие выбора. _OnSelection(PopupId, -1, onSelection); } void FAR ShutDown() { _DisposeItem(SysMenuId, PadId); _DisposeMenu(PopupId); } FoxInfo myFoxInfo[] = { {"STARTUP", (FPFI) StartUp, CALLONLOAD,""}, {"SHUTDOWN", (FPFI) ShutDown, CALLONUNLOAD, ""}, }; FoxTable _FoxTable = { (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |