Assigns a submenu to the specified menu item.
void _SetItemSubMenu(MENUID menuid, ITEMID itemid, MENUID submenuid) MENUID menuid; /* Menu identifier. */ ITEMID itemid; /* Menu item identifier. */ MENUID submenuid; /* Submenu identifier. */ |
Remarks
You can use _SetItemSubMenu(В ) to attach a menu to a menu title or to a submenu to a 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 adds a menu title to the system menu. Using _SetItemSubMenu(В ), it then attaches a menu with two items to this menu title.
Visual FoxPro Code
В | Copy Code |
---|---|
SET LIBRARY TO SETISUBM |
C Code
В | 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; // 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); // Set up selection action. _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 }; |