/** * @brief The function opens a popup menu at the given position. It returns * immediately after creation. On the first call it creates the menu. * @param hParent: pointer to the handle of the parent * @param pMenuItems: pointer to menu items * @param NumItems: number of menu items * @param x: x position of the popup * @param y: y position of the popup * @retval None */ static void _OpenPopup(WM_HWIN hParent, MENU_ITEM * pMenuItems, int NumItems, int x, int y) { static MENU_Handle hMenu; if (!hMenu) { int i; /* Create the popup window only one time */ hMenu = MENU_CreateEx(0, 0, 0, 0, WM_UNATTACHED, 0, MENU_CF_VERTICAL, 0); MENU_SetBkColor(hMenu, MENU_CI_SELECTED, GUI_LIGHTBLUE); for (i = 0; i < NumItems; i++) { _AddMenuItem(hMenu, 0, pMenuItems[i].sText, pMenuItems[i].Id, pMenuItems[i].Flags); } } MENU_Popup(hMenu, hParent, x, y, 0, 0, 0); }
/** * @brief Opens a popup menu at the given position. * @note It returns immediately after creation. * On the first call it creates the menu * @param hParent: pointer to the handle of the parent * @param pMenuItems: pointer to menu items * @param NumItems: number of menu items * @param x: x position of the popup * @param y: y position of the popup * @retval None */ static void _OpenPopup(WM_HWIN hParent, MENU_ITEM * pMenuItems, int NumItems, int x, int y) { static MENU_Handle hMenu; if (!hMenu) { int i; /* Create the popup window only one time */ hMenu = MENU_CreateEx(0, 0, 0, 0, WM_UNATTACHED, 0, MENU_CF_VERTICAL, 0); MENU_SetBkColor(hMenu, MENU_CI_SELECTED, GUI_LIGHTBLUE); for (i = 0; i < NumItems; i++) { _AddMenuItem(hMenu, 0, pMenuItems[i].sText, pMenuItems[i].Id, pMenuItems[i].Flags); } } /* Open the popup menu. After opening the menu the function returns immediately. * After selecting menu item or after touching the display outside the menu the * popup menu will be closed, but not deleted. */ MENU_Popup(hMenu, hParent, x, y, 0, 0, 0); }