static bool LuaGuiModifyMenu(void *hMenu, uint32_t position, uint32_t flag, UINT_PTR newItemId, const char *newItemName) { return !! ModifyMenuA( reinterpret_cast<HMENU>(hMenu), position, flag, newItemId, newItemName); }
void GLUTAPIENTRY glutChangeToSubMenu(int num, const char *label, int menu) { GLUTmenu *popupmenu; GLUTmenuItem *item; int i; if (__glutMappedMenu) { menuModificationError(); } i = __glutCurrentMenu->num; item = __glutCurrentMenu->list; while (item) { if (i == num) { if (!item->isTrigger) { /* If changing a menu entry to as submenu trigger, we need to account for submenus. */ item->menu->submenus++; item->win = (HWND) CreatePopupMenu(); } free(item->label); item->label = strdup(label); if (!item->label) __glutFatalError("out of memory"); item->isTrigger = TRUE; item->len = (int) strlen(label); item->value = menu - 1; item->unique = uniqueMenuHandler++; popupmenu = __glutGetMenuByNum(menu); if (popupmenu) item->win = popupmenu->win; ModifyMenuA((HMENU) __glutCurrentMenu->win, (UINT) i - 1, MF_BYPOSITION | MF_POPUP, (UINT) item->win, label); return; } i--; item = item->next; } __glutWarning("Current menu has no %d item.", num); }
void GLUTAPIENTRY glutChangeToMenuEntry(int num, const char *label, int value) { GLUTmenuItem *item; int i; if (__glutMappedMenu) { menuModificationError(); } i = __glutCurrentMenu->num; item = __glutCurrentMenu->list; while (item) { if (i == num) { if (item->isTrigger) { /* If changing a submenu trigger to a menu entry, we need to account for submenus. */ item->menu->submenus--; /* Nuke the Win32 menu. */ DestroyMenu((HMENU) item->win); } free(item->label); item->label = strdup(label); if (!item->label) __glutFatalError("out of memory"); item->isTrigger = FALSE; item->len = (int) strlen(label); item->value = value; item->unique = uniqueMenuHandler++; ModifyMenuA((HMENU) __glutCurrentMenu->win, (UINT) i - 1, MF_BYPOSITION | MFT_STRING, item->unique, label); return; } i--; item = item->next; } __glutWarning("Current menu has no %d item.", num); }
BOOL ModifyMenuCP(HMENU hMnu, UINT uPosition, UINT uFlags, UINT uIDNewItem, LPCSTR lpNewItem) { if (NewLangCP != CP_THREAD_ACP) return ModifyMenuW(hMnu, uPosition, uFlags, uIDNewItem, ConvertCodepage(lpNewItem, NewLangCP)); else return ModifyMenuA(hMnu, uPosition, uFlags, uIDNewItem, lpNewItem); }