_GetNewItemId( ) (Rutina de biblioteca API)
Devuelve un identificador que actualmente está disponible para su uso como identificador de elemento en el menú especificado.
ITEMID _GetNewItemId(MENUID menuid)
MENUID menuid; /* Menu identifier. */
Observaciones
Todos los elementos de un menú deben tener un identificador que sea exclusivo para ese menú.
Tras utilizar _GetNewItemId( ), anexe el nuevo elemento al menú con _NewItem( ) antes de volver a utilizar _GetNewItemId( ). Si no anexa el elemento al menú, las llamadas posteriores a _GetNewItemId( ) devuelven el mismo ITEMID.
Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.
Ejemplo
El siguiente ejemplo crea un menú con tres elementos. Antes de que se agregue cada elemento al menú, se genera un ITEMID único mediante una llamada a _GetNewItemId( ).
Código Visual FoxPro
SET LIBRARY TO GETNWIID
Código C
#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR GetNewItemId(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_MenuInteract(&menuId, &itemId);
_PutStr("\nmenuId ="); putLong(menuId);
_PutStr("\nitemId ="); putLong(itemId);
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) GetNewItemId, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
Vea también
_GetItemId( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _SetItemText( ) (Rutina de biblioteca API) | _NewItem( ) (Rutina de biblioteca API) | _GetNewMenuId( ) (Rutina de biblioteca API)