Condividi tramite


_GetItemSubMenu( ) API Library Routine

Returns the menu item identifier of a submenu assigned to a menu item.

MENUID _GetItemSubMenu(MENUID menuid, ITEMID itemid);
MENUID menuid;            /* Menu identifier */
ITEMID itemid;            /* Menu item identifier*/

Remarks

A submenu is treated as an independent menu. _GetItemSubMenu( ) returns the MENUID of the submenu assigned to a specified menu item, or a – 1 if there is no submenu assigned to the menu item.

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 creates a menu system and returns the sub menu ID.

Visual FoxPro Code

SET LIBRARY TO GETITEMS

C Code

#include <pro_ext.h>

MENUID SysMenuId, retMenuId;
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;
//
//   Add new menu title to SYSMENU.
//
  SysMenuId = _MenuId(_SYSMENU);
  PadId = _GetNewItemId(SysMenuId);

   if (_NewItem(SysMenuId, PadId, _LASTITEM, "\\<Added menu title"))
  {
    _Error(623); /* "Menu item cannot be defined." */
  }
//
//   Define menu.
//
  PopupId = _GetNewMenuId();

  if (Error = _NewMenu(MPOPUP, PopupId))
  {
    _Error(-Error);
  }
   Bar1Id = _GetNewItemId(PopupId);
//
//      WARNING: Call _NewItem() before another _GetNewItemId().
//
   if (_NewItem(PopupId, Bar1Id, _LASTITEM, "\\<1st item"))
  {
    _Error(623); /* "Menu item cannot be defined." */
  }
   Bar2Id = _GetNewItemId(PopupId);

   if (_NewItem(PopupId, Bar2Id, _LASTITEM, "\\<2nd item"))
  {
    _Error(623); /* "Menu item cannot be defined." */
  }
//
//   Attach menu to menu title.
//
  _SetItemSubMenu(SysMenuId, PadId, PopupId);

  _PutStr("\nSubMenu Id = "); putLong(PopupId);

//
//  Set up selection action.
//
   retMenuId = _GetItemSubMenu(SysMenuId,PadId);
   _PutStr("\nThis is the return value from  _GetItemSubMenu.  retMenuId = "); putLong(retMenuId);

   _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
};

See Also

_GetItemId( ) API Library Routine | _NewItem( ) API Library Routine | _SetItemText( ) API Library Routine | Accessing the Visual FoxPro API