--- np2/win9x/menu.cpp 2005/03/23 08:07:48 1.22 +++ np2/win9x/menu.cpp 2007/07/20 14:39:11 1.25 @@ -48,7 +48,7 @@ void menu_addmenubar(HMENU popup, HMENU } static void insertresmenu(HMENU menu, UINT pos, UINT flag, - UINT item, UINT str) { + UINT32 item, UINT str) { TCHAR tmp[128]; @@ -189,48 +189,67 @@ void sysmenu_setscrnmul(UINT8 value) { typedef struct { UINT16 title; + UINT16 items; + MENUITEMS item[1]; +} SUBMITEMS; + +typedef struct { + UINT16 title; + UINT16 items; MENUITEMS item[3]; -} DISKMENU; +} SUBMITEM3; -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 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 -static void insdiskmenu(HMENU hMenu, UINT pos, const DISKMENU *m) { +#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 - HMENU hSubMenu; + +static void insdiskmenu(HMENU hMenu, UINT pos, const void *item) { + + HMENU hSubMenu; +const SUBMITEMS *smi; hSubMenu = CreatePopupMenu(); - insertresmenus(hSubMenu, 0, m->item, 3); + smi = (SUBMITEMS *)item; + insertresmenus(hSubMenu, 0, smi->item, smi->items); insertresmenu(hMenu, pos, MF_BYPOSITION | MF_POPUP, - (UINT)hSubMenu, m->title); + (UINT)hSubMenu, smi->title); } -#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 #if defined(SUPPORT_STATSAVE) static const TCHAR xmenu_stat[] = _T("S&tat"); @@ -262,29 +281,44 @@ void xmenu_initialize(void) { HMENU hMenu; HMENU hSubMenu; + UINT subpos; UINT i; hMenu = np2class_gethmenu(hWndMain); if (np2oscfg.I286SAVE) { - hSubMenu = GetSubMenu(hMenu, 4); + hSubMenu = GetSubMenu(hMenu, 3); insertresmenu(hSubMenu, 10, MF_BYPOSITION | MF_STRING, IDM_CPUSAVE, IDS_CPUSAVE); } #if defined(SUPPORT_WAVEREC) - hSubMenu = GetSubMenu(hMenu, 4); + hSubMenu = GetSubMenu(hMenu, 3); insertresmenu(hSubMenu, 2, MF_BYPOSITION | MF_STRING, IDM_WAVEREC, IDS_WAVEREC); #endif + hSubMenu = CreatePopupMenu(); + subpos = 0; +#if defined(SUPPORT_IDEIO) + for (i=0; i0;) { + i--; if (np2cfg.fddequip & (1 << i)) { insdiskmenu(hMenu, 1, fddmenu + i); } @@ -423,6 +457,8 @@ 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)); + CheckMenuItem(hmenu, IDM_PX1, MFCHECK(value == 0x30)); + CheckMenuItem(hmenu, IDM_PX2, MFCHECK(value == 0x50)); } void xmenu_setjastsound(UINT8 value) {