Bagikan melalui


_NewItem( ) API Library Routine

Adds an item with the specified identifier itemid to the menu specified by menuid.

int _NewItem(MENUID menuid, ITEMID itemid, ITEMID 
beforeid, char FAR *prompt)
MENUID menuid;            /* Menu identifier. */
ITEMID itemid;            /* New item identifier. */
ITEMID beforeid;            /* Identifier of item the new item
 precedes. */
char FAR *prompt;         /* Text for new menu item. */

Remarks

The type of the new menu item is automatically a menu title or a bar, depending on the type of menu into which the item is being inserted.

The beforeid parameter specifies the identifier of the item the new item is to precede. Specify beforeid as – 1 to specify the new item will be the first item in the list, or as -2 to specify the item is to be added at the end of the list. The prompt specifies the text for the new menu item. _NewItem( ) returns 0 if it succeeds in adding an item, or – 1 if not.

For more information on how to create an API library and integrate it with Visual FoxPro, see Accessing the Visual FoxPro API.

Example

The following example builds a menu with three items. It uses _NewItem( ) to add each item to the menu.

Visual FoxPro Code

SET LIBRARY TO NEWITEM 

C Code

#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, "\\<2nd item");

   itemId = _GetNewItemId(menuId);
   _NewItem(menuId, itemId, -1, "\\<1st 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
};

See Also

_SetItemCmdKey( ) API Library Routine | _SetItemSubMenu( ) API Library Routine | Accessing the Visual FoxPro API