Share via


_OnSelection( ) (Rutina de biblioteca API)

Especifica una rutina que se va a ejecutar cuando el usuario elija el menú y el elemento especificados.

void _OnSelection(MENUID menuid, ITEMID itemid, FPFI routine)
MENUID menuid;            /* Menu identifier. */
ITEMID itemid;            /* Item identifier. */
FPFI routine;               /* Routine to execute. */

Observaciones

Si especifica itemid como – 1, se ejecutará la rutina cuando el usuario elija cualquier elemento de menú. Una rutina asociada con un elemento individual anula un elemento asociado con todo el menú. Para cancelar una rutina de selección para un menú y un elemento determinados, pase (FPFI)0 como parámetro routine.

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. Llama a _OnSelection( ) con un parámetro ITEMID de –1, lo que indica que se llamará a la función USERCHOICE( ) cuando el usuario elija cualquier elemento de este menú.

Código Visual FoxPro

SET LIBRARY TO ONSELECT

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 onSelection(long menuId, long itemId)
{
   _PutStr("\nitemId = "); putLong(itemId);
   _DisposeMenu(menuId);
}

FAR activateMenu(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);

   _ActivateMenu(menuId);
   _OnSelection(menuId, -1, onSelection);
}

FoxInfo myFoxInfo[] = {
   {"ONLOAD", (FPFI) activateMenu, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

Acceso a la API de Visual FoxPro | _ActivateMenu( ) (Rutina de biblioteca API) | _MenuInteract( ) (Rutina de biblioteca API)