--- np2/win9x/menu.cpp 2007/07/20 14:39:11 1.25 +++ 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,148 +264,60 @@ void sysmenu_setscrnmul(UINT8 value) { // ---- -typedef struct { - UINT16 title; - UINT16 items; - MENUITEMS item[1]; -} SUBMITEMS; - -typedef struct { - UINT16 title; - UINT16 items; - MENUITEMS item[3]; -} SUBMITEM3; - -static const SUBMITEM3 fddmenu[4] = { - {IDS_FDD1, 3, - {{IDM_FDD1OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD1EJECT, IDS_EJECT}}}, - {IDS_FDD2, 3, - {{IDM_FDD2OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD2EJECT, IDS_EJECT}}}, - {IDS_FDD3, 3, - {{IDM_FDD3OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD3EJECT, IDS_EJECT}}}, - {IDS_FDD4, 3, - {{IDM_FDD4OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD4EJECT, IDS_EJECT}}}}; - -#if defined(SUPPORT_IDEIO) -static const SUBMITEM3 side[3] = { - {IDS_IDE0, 3, - {{IDM_IDE0OPEN, IDS_OPEN}, {0, 0}, {IDM_IDE0EJECT, IDS_REMOVE}}}, - {IDS_IDE1, 3, - {{IDM_IDE1OPEN, IDS_OPEN}, {0, 0}, {IDM_IDE1EJECT, IDS_REMOVE}}}, - {IDS_IDE2, 3, - {{IDM_IDE2OPEN, IDS_OPEN}, {0, 0}, {IDM_IDE2EJECT, IDS_EJECT}}}}; -#else -static const SUBMITEM3 ssasi[2] = { - {IDS_SASI1, 3, - {{IDM_IDE0OPEN, IDS_OPEN}, {0, 0}, {IDM_IDE0EJECT, IDS_REMOVE}}}, - {IDS_SASI2, 3, - {{IDM_IDE1OPEN, IDS_OPEN}, {0, 0}, {IDM_IDE1EJECT, IDS_REMOVE}}}}; -#endif - -#if defined(SUPPORT_SCSI) -static const SUBMITEM3 sscsi[4] = { - {IDS_SCSI0, 3, - {{IDM_SCSI0OPEN, IDS_OPEN}, {0, 0}, {IDM_SCSI0EJECT, IDS_REMOVE}}}, - {IDS_SCSI1, 3, - {{IDM_SCSI1OPEN, IDS_OPEN}, {0, 0}, {IDM_SCSI1EJECT, IDS_REMOVE}}}, - {IDS_SCSI2, 3, - {{IDM_SCSI2OPEN, IDS_OPEN}, {0, 0}, {IDM_SCSI2EJECT, IDS_REMOVE}}}, - {IDS_SCSI3, 3, - {{IDM_SCSI3OPEN, IDS_OPEN}, {0, 0}, {IDM_SCSI3EJECT, IDS_REMOVE}}}}; -#endif - - -static void insdiskmenu(HMENU hMenu, UINT pos, const void *item) { - - HMENU hSubMenu; -const SUBMITEMS *smi; - - hSubMenu = CreatePopupMenu(); - smi = (SUBMITEMS *)item; - insertresmenus(hSubMenu, 0, smi->item, smi->items); - insertresmenu(hMenu, pos, MF_BYPOSITION | MF_POPUP, - (UINT)hSubMenu, smi->title); -} +void xmenu_initialize(void) +{ + HMENU hMenu; + UINT uPos; + HMENU hmenuSub; + UINT i; + UINT uSubPos; + hMenu = np2class_gethmenu(hWndMain); + uPos = 1; #if defined(SUPPORT_STATSAVE) -static const TCHAR xmenu_stat[] = _T("S&tat"); -static const TCHAR xmenu_statsave[] = _T("Save %u"); -static const TCHAR xmenu_statload[] = _T("Load %u"); - -static void addstatsavemenu(HMENU hMenu, UINT pos) { - - HMENU hSubMenu; - UINT i; - TCHAR buf[16]; - - hSubMenu = CreatePopupMenu(); - for (i=0; i0;) { - i--; - if (np2cfg.fddequip & (1 << i)) { - insdiskmenu(hMenu, 1, fddmenu + i); - } - } +#if defined(SUPPORT_WAVEREC) + (void)addmenubyid(hMenu, IDM_S98LOGGING, IDR_WAVEREC); +#endif -#if defined(SUPPORT_STATSAVE) - if (np2oscfg.statsave) { - addstatsavemenu(hMenu, 1); + if (np2oscfg.I286SAVE) + { + (void)addmenubyid(hMenu, IDM_SSTP, IDR_CPUSAVE); } -#endif } void xmenu_disablewindow(void) { @@ -457,8 +446,10 @@ void xmenu_setsound(UINT8 value) { CheckMenuItem(hmenu, IDM_SPEAKBOARD, MFCHECK(value == 0x20)); CheckMenuItem(hmenu, IDM_SPARKBOARD, MFCHECK(value == 0x40)); CheckMenuItem(hmenu, IDM_AMD98, MFCHECK(value == 0x80)); +#if defined(SUPPORT_PX) CheckMenuItem(hmenu, IDM_PX1, MFCHECK(value == 0x30)); CheckMenuItem(hmenu, IDM_PX2, MFCHECK(value == 0x50)); +#endif // defined(SUPPORT_PX) } void xmenu_setjastsound(UINT8 value) {