|
|
| version 1.21, 2005/03/20 13:12:49 | version 1.27, 2007/10/26 14:38:34 |
|---|---|
| Line 48 void menu_addmenubar(HMENU popup, HMENU | Line 48 void menu_addmenubar(HMENU popup, HMENU |
| } | } |
| static void insertresmenu(HMENU menu, UINT pos, UINT flag, | static void insertresmenu(HMENU menu, UINT pos, UINT flag, |
| UINT item, UINT str) { | UINT32 item, UINT str) { |
| TCHAR tmp[128]; | TCHAR tmp[128]; |
| Line 76 const MENUITEMS *iterm; | Line 76 const MENUITEMS *iterm; |
| } | } |
| } | } |
| static BOOL searchchildmenu(HMENU hMenu, UINT uID, HMENU *phmenuRet, UINT *puPos) | |
| { | |
| UINT nCount; | |
| UINT i; | |
| MENUITEMINFO mii; | |
| nCount = GetMenuItemCount(hMenu); | |
| for (i=0; i<nCount; i++) | |
| { | |
| ZeroMemory(&mii, sizeof(mii)); | |
| mii.cbSize = sizeof(mii); | |
| mii.fMask = MIIM_ID | MIIM_SUBMENU; | |
| if (GetMenuItemInfo(hMenu, i, TRUE, &mii)) | |
| { | |
| if (mii.wID == uID) | |
| { | |
| if (phmenuRet) | |
| { | |
| *phmenuRet = hMenu; | |
| } | |
| if (puPos) | |
| { | |
| *puPos = i; | |
| } | |
| return TRUE; | |
| } | |
| else if ((mii.hSubMenu) && (searchchildmenu(mii.hSubMenu, uID, phmenuRet, puPos))) | |
| { | |
| return TRUE; | |
| } | |
| } | |
| } | |
| return FALSE; | |
| } | |
| static BOOL searchsubmenu(HMENU hMenu, HMENU hmenuTarget, HMENU *phmenuRet, UINT *puPos) | |
| { | |
| UINT nCount; | |
| UINT i; | |
| MENUITEMINFO mii; | |
| nCount = GetMenuItemCount(hMenu); | |
| for (i=0; i<nCount; i++) | |
| { | |
| ZeroMemory(&mii, sizeof(mii)); | |
| mii.cbSize = sizeof(mii); | |
| mii.fMask = MIIM_SUBMENU; | |
| if ((GetMenuItemInfo(hMenu, i, TRUE, &mii)) && (mii.hSubMenu)) | |
| { | |
| if (mii.hSubMenu == hmenuTarget) | |
| { | |
| if (phmenuRet) | |
| { | |
| *phmenuRet = hMenu; | |
| } | |
| if (puPos) | |
| { | |
| *puPos = i; | |
| } | |
| return TRUE; | |
| } | |
| if (searchsubmenu(mii.hSubMenu, hmenuTarget, phmenuRet, puPos)) | |
| { | |
| return TRUE; | |
| } | |
| } | |
| } | |
| return FALSE; | |
| } | |
| // ---- | // ---- |
| Line 189 void sysmenu_setscrnmul(UINT8 value) { | Line 259 void sysmenu_setscrnmul(UINT8 value) { |
| typedef struct { | typedef struct { |
| UINT16 title; | UINT16 title; |
| UINT16 items; | |
| MENUITEMS item[1]; | |
| } SUBMITEMS; | |
| typedef struct { | |
| UINT16 title; | |
| UINT16 items; | |
| MENUITEMS item[3]; | MENUITEMS item[3]; |
| } DISKMENU; | } SUBMITEM3; |
| static const DISKMENU fddmenu[4] = { | static const SUBMITEM3 fddmenu[4] = { |
| {IDS_FDD1, {{IDM_FDD1OPEN, IDS_OPEN}, | {IDS_FDD1, 3, |
| {0, 0}, | {{IDM_FDD1OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD1EJECT, IDS_EJECT}}}, |
| {IDM_FDD1EJECT, IDS_EJECT}}}, | {IDS_FDD2, 3, |
| {IDS_FDD2, {{IDM_FDD2OPEN, IDS_OPEN}, | {{IDM_FDD2OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD2EJECT, IDS_EJECT}}}, |
| {0, 0}, | {IDS_FDD3, 3, |
| {IDM_FDD2EJECT, IDS_EJECT}}}, | {{IDM_FDD3OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD3EJECT, IDS_EJECT}}}, |
| {IDS_FDD3, {{IDM_FDD3OPEN, IDS_OPEN}, | {IDS_FDD4, 3, |
| {0, 0}, | {{IDM_FDD4OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD4EJECT, IDS_EJECT}}}}; |
| {IDM_FDD3EJECT, IDS_EJECT}}}, | |
| {IDS_FDD4, {{IDM_FDD4OPEN, IDS_OPEN}, | #if defined(SUPPORT_IDEIO) |
| {0, 0}, | static const SUBMITEM3 side[3] = { |
| {IDM_FDD4EJECT, IDS_EJECT}}}}; | {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(); | 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, | 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) | #if defined(SUPPORT_STATSAVE) |
| static const TCHAR xmenu_stat[] = _T("S&tat"); | static const TCHAR xmenu_stat[] = _T("S&tat"); |
| Line 262 void xmenu_initialize(void) { | Line 351 void xmenu_initialize(void) { |
| HMENU hMenu; | HMENU hMenu; |
| HMENU hSubMenu; | HMENU hSubMenu; |
| UINT subpos; | |
| UINT i; | UINT i; |
| hMenu = np2class_gethmenu(hWndMain); | hMenu = np2class_gethmenu(hWndMain); |
| if (np2oscfg.I286SAVE) { | if (np2oscfg.I286SAVE) { |
| hSubMenu = GetSubMenu(hMenu, 4); | hSubMenu = GetSubMenu(hMenu, 3); |
| insertresmenu(hSubMenu, 10, MF_BYPOSITION | MF_STRING, | insertresmenu(hSubMenu, 10, MF_BYPOSITION | MF_STRING, |
| IDM_I286SAVE, IDS_I286SAVE); | IDM_CPUSAVE, IDS_CPUSAVE); |
| } | } |
| #if defined(SUPPORT_PX) | |
| hSubMenu = GetSubMenu(hMenu, 2); | |
| hSubMenu = GetSubMenu(hSubMenu, 1); | |
| insertresmenu(hSubMenu, 14, MF_BYPOSITION | MF_STRING, | |
| IDM_PX1, IDS_PX1); | |
| insertresmenu(hSubMenu, 15, MF_BYPOSITION | MF_STRING, | |
| IDM_PX2, IDS_PX2); | |
| #endif | |
| #if defined(SUPPORT_WAVEREC) | #if defined(SUPPORT_WAVEREC) |
| hSubMenu = GetSubMenu(hMenu, 4); | hSubMenu = GetSubMenu(hMenu, 3); |
| insertresmenu(hSubMenu, 2, MF_BYPOSITION | MF_STRING, | insertresmenu(hSubMenu, 2, MF_BYPOSITION | MF_STRING, |
| IDM_WAVEREC, IDS_WAVEREC); | IDM_WAVEREC, IDS_WAVEREC); |
| #endif | #endif |
| hSubMenu = CreatePopupMenu(); | |
| subpos = 0; | |
| #if defined(SUPPORT_IDEIO) | |
| for (i=0; i<NELEMENTS(side); i++) { | |
| insdiskmenu(hSubMenu, subpos++, side + i); | |
| } | |
| #else | |
| for (i=0; i<NELEMENTS(ssasi); i++) { | |
| insdiskmenu(hSubMenu, subpos++, ssasi + i); | |
| } | |
| #endif | |
| #if defined(SUPPORT_SCSI) | #if defined(SUPPORT_SCSI) |
| hSubMenu = GetSubMenu(hMenu, 1); | |
| AppendMenu(hSubMenu, MF_SEPARATOR, 0, NULL); | AppendMenu(hSubMenu, MF_SEPARATOR, 0, NULL); |
| for (i=0; i<4; i++) { | subpos++; |
| insdiskmenu(hSubMenu, i + 3, scsimenu + i); | for (i=0; i<NELEMENTS(sscsi); i++) { |
| insdiskmenu(hSubMenu, subpos++, sscsi + i); | |
| } | } |
| #endif | #endif |
| insertresmenu(hMenu, 1, MF_BYPOSITION | MF_POPUP, | |
| (UINT32)hSubMenu, IDS_HDD); | |
| for (i=4; i--;) { | for (i=4; i>0;) { |
| i--; | |
| if (np2cfg.fddequip & (1 << i)) { | if (np2cfg.fddequip & (1 << i)) { |
| insdiskmenu(hMenu, 1, fddmenu + i); | insdiskmenu(hMenu, 1, fddmenu + i); |
| } | } |
| Line 423 void xmenu_setsound(UINT8 value) { | Line 537 void xmenu_setsound(UINT8 value) { |
| CheckMenuItem(hmenu, IDM_SPEAKBOARD, MFCHECK(value == 0x20)); | CheckMenuItem(hmenu, IDM_SPEAKBOARD, MFCHECK(value == 0x20)); |
| CheckMenuItem(hmenu, IDM_SPARKBOARD, MFCHECK(value == 0x40)); | CheckMenuItem(hmenu, IDM_SPARKBOARD, MFCHECK(value == 0x40)); |
| CheckMenuItem(hmenu, IDM_AMD98, MFCHECK(value == 0x80)); | 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) { | void xmenu_setjastsound(UINT8 value) { |