Возвращает идентификатор меню, который соответствует системному литералу для системного меню или заголовка меню (menu title).
MENUID _MenuId(long literal) long literal; /* Системный литерал. */ |
Замечания
Литералы определены в включаемом файле PRO_EXT.H.
Для дальнейшей информации о том, как создать API библиотеку и интегрировать ее с Visual FoxPro, смотрите Подключение Visual FoxPro API.
Пример
Следующий пример добавляет заголовок в системное меню. Затем присоединяет к нему выпадающее меню, состоящее из двух пунктов.
Процедура _MenuId( ) используется для получения MENUID системного меню.
Visual FoxPro Код
Copy Code | |
|---|---|
SET LIBRARY TO MENUID | |
C Код
Copy Code | |
|---|---|
#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
}; | |