--- np2/win9x/menu.cpp 2005/02/09 20:11:35 1.20 +++ np2/win9x/menu.cpp 2007/10/26 22:48:28 1.28 @@ -10,114 +10,191 @@ #define MFCHECK(a) ((a)?MF_CHECKED:MF_UNCHECKED) -typedef struct { - UINT16 id; - UINT16 str; -} MENUITEMS; +static BOOL searchchildmenu(HMENU hMenu, UINT uID, + HMENU *phmenuRet, UINT *puPos) +{ + UINT nCount; + UINT i; + MENUITEMINFO mii; + nCount = GetMenuItemCount(hMenu); + for (i=0; iid) { - insertresmenu(menu, pos, MF_BYPOSITION | MF_STRING, - item->id, item->str); - } - else { - InsertMenu(menu, pos, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); - } - item++; - pos++; + if (LoadString(hInst, uID, szString, NELEMENTS(szString))) + { + InsertMenu(hMenu, uPosition, uFlags, uIDNewItem, szString); } } +void menu_addmenubar(HMENU popup, HMENU menubar) +{ + (void)addmenu(popup, 0, menubar, FALSE); +} + // ---- -static const MENUITEMS smenuitem[] = { - {IDM_TOOLWIN, IDS_TOOLWIN}, +void sysmenu_initialize(void) +{ + HMENU hMenu; + UINT uPos; + + hMenu = GetSystemMenu(hWndMain, FALSE); + uPos = 0; + #if defined(SUPPORT_KEYDISP) - {IDM_KEYDISP, IDS_KEYDISP}, + uPos += addmenures(hMenu, uPos, IDR_SYSKEYDISP, FALSE); #endif #if defined(SUPPORT_SOFTKBD) - {IDM_SOFTKBD, IDS_SOFTKBD}, + uPos += addmenures(hMenu, uPos, IDR_SYSSOFTKBD, FALSE); #endif - {0, 0}, - {IDM_SCREENCENTER, IDS_SCREENCENTER}, - {IDM_SNAPENABLE, IDS_SNAPENABLE}, - {IDM_BACKGROUND, IDS_BACKGROUND}, - {IDM_BGSOUND, IDS_BGSOUND}, - {0, 0}, - {IDM_SCRNMUL4, IDS_SCRNMUL4}, - {IDM_SCRNMUL6, IDS_SCRNMUL6}, - {IDM_SCRNMUL8, IDS_SCRNMUL8}, - {IDM_SCRNMUL10, IDS_SCRNMUL10}, - {IDM_SCRNMUL12, IDS_SCRNMUL12}, - {IDM_SCRNMUL16, IDS_SCRNMUL16}, - {0, 0}}; -static const MENUITEMS smenuitem2[] = { + uPos += addmenures(hMenu, uPos, IDR_SYS, FALSE); + if (np2oscfg.I286SAVE) + { #if defined(CPUCORE_IA32) && defined(SUPPORT_MEMDBG32) - {IDM_MEMDBG32, IDS_MEMDBG32}, + uPos += addmenures(hMenu, uPos, IDR_SYSDEBUG32, FALSE); #endif - {IDM_MEMORYDUMP, IDS_MEMORYDUMP}, - {IDM_DEBUGUTY, IDS_DEBUGUTY}, - {0, 0}}; - - -void sysmenu_initialize(void) { - - HMENU hMenu; - - hMenu = GetSystemMenu(hWndMain, FALSE); - insertresmenus(hMenu, 0, smenuitem, NELEMENTS(smenuitem)); - if (np2oscfg.I286SAVE) { - insertresmenus(hMenu, 0, smenuitem2, NELEMENTS(smenuitem2)); + uPos += addmenures(hMenu, uPos, IDR_SYSDEBUG, FALSE); } } @@ -187,114 +264,60 @@ void sysmenu_setscrnmul(UINT8 value) { // ---- -typedef struct { - UINT16 title; - MENUITEMS item[3]; -} DISKMENU; - -static const DISKMENU fddmenu[4] = { - {IDS_FDD1, {{IDM_FDD1OPEN, IDS_OPEN}, - {0, 0}, - {IDM_FDD1EJECT, IDS_EJECT}}}, - {IDS_FDD2, {{IDM_FDD2OPEN, IDS_OPEN}, - {0, 0}, - {IDM_FDD2EJECT, IDS_EJECT}}}, - {IDS_FDD3, {{IDM_FDD3OPEN, IDS_OPEN}, - {0, 0}, - {IDM_FDD3EJECT, IDS_EJECT}}}, - {IDS_FDD4, {{IDM_FDD4OPEN, IDS_OPEN}, - {0, 0}, - {IDM_FDD4EJECT, IDS_EJECT}}}}; - -static void insdiskmenu(HMENU hMenu, UINT pos, const DISKMENU *m) { - - HMENU hSubMenu; - - hSubMenu = CreatePopupMenu(); - insertresmenus(hSubMenu, 0, m->item, 3); - insertresmenu(hMenu, pos, MF_BYPOSITION | MF_POPUP, - (UINT)hSubMenu, m->title); -} +void xmenu_initialize(void) +{ + HMENU hMenu; + UINT uPos; + HMENU hmenuSub; + UINT i; + UINT uSubPos; -#if defined(SUPPORT_SCSI) -static const DISKMENU scsimenu[4] = { - {IDS_SCSI0, {{IDM_SCSI0OPEN, IDS_OPEN}, - {0, 0}, - {IDM_SCSI0EJECT, IDS_REMOVE}}}, - {IDS_SCSI1, {{IDM_SCSI1OPEN, IDS_OPEN}, - {0, 0}, - {IDM_SCSI1EJECT, IDS_REMOVE}}}, - {IDS_SCSI2, {{IDM_SCSI2OPEN, IDS_OPEN}, - {0, 0}, - {IDM_SCSI2EJECT, IDS_REMOVE}}}, - {IDS_SCSI3, {{IDM_SCSI3OPEN, IDS_OPEN}, - {0, 0}, - {IDM_SCSI3EJECT, IDS_REMOVE}}}}; -#endif + hMenu = np2class_gethmenu(hWndMain); + uPos = 1; #if defined(SUPPORT_STATSAVE) -static const OEMCHAR xmenu_stat[] = OEMTEXT("S&tat"); -static const OEMCHAR xmenu_statsave[] = OEMTEXT("Save %u"); -static const OEMCHAR xmenu_statload[] = OEMTEXT("Load %u"); - -static void addstatsavemenu(HMENU hMenu, UINT pos) { - - HMENU hSubMenu; - UINT i; - OEMCHAR buf[16]; - - hSubMenu = CreatePopupMenu(); - for (i=0; i