--- xmil/win9x/menu.cpp 2004/08/02 13:38:46 1.2 +++ xmil/win9x/menu.cpp 2004/08/18 11:46:57 1.15 @@ -4,11 +4,12 @@ #include "dosio.h" #include "scrnmng.h" #include "sysmng.h" +#include "extclass.h" #include "pccore.h" #include "ini.h" #include "menu.h" -#include "draw.h" #include "palettes.h" +#include "makescrn.h" #include "fdd_mtr.h" #include "fdd_ini.h" @@ -104,91 +105,207 @@ void sysmenu_setbgsound(UINT8 value) { // ---- -void xmenu_disablewindow(void) { +typedef struct { + UINT16 title; + UINT16 items; +const MENUITEMS *item; +} SUBMENUI; + +static const MENUITEMS fddsitem[4][3] = { + { {IDM_FDD0OPEN, IDS_OPEN}, + {0, 0}, + {IDM_FDD0EJECT, IDS_EJECT}}, + { {IDM_FDD1OPEN, IDS_OPEN}, + {0, 0}, + {IDM_FDD1EJECT, IDS_EJECT}}, + { {IDM_FDD2OPEN, IDS_OPEN}, + {0, 0}, + {IDM_FDD2EJECT, IDS_EJECT}}, + { {IDM_FDD3OPEN, IDS_OPEN}, + {0, 0}, + {IDM_FDD3EJECT, IDS_EJECT}}}; + +static const SUBMENUI fddmenu[4] = { + {IDS_FDD0, 3, fddsitem[0]}, + {IDS_FDD1, 3, fddsitem[1]}, + {IDS_FDD2, 3, fddsitem[2]}, + {IDS_FDD3, 3, fddsitem[3]}}; + +static const MENUITEMS dbgsitem[4] = { + {IDM_WIDTH40, IDS_WIDTH40}, + {IDM_WIDTH80, IDS_WIDTH80}, + {0, 0}, + {IDM_Z80SAVE, IDS_Z80SAVE}}; + +static const SUBMENUI dbgmenu = {IDS_DEBUG, 4, dbgsitem}; + + +static void insertsubmenu(HMENU hMenu, UINT pos, const SUBMENUI *sm) { + + HMENU hSubMenu; + + hSubMenu = CreatePopupMenu(); + insertresmenus(hSubMenu, 0, sm->item, sm->items); + insertresmenu(hMenu, pos, MF_BYPOSITION | MF_POPUP, + (UINT)hSubMenu, sm->title); +} + +#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= 3) { value = 0; } @@ -198,17 +315,17 @@ void xmenu_setkey(UINT8 value) { CheckMenuItem(hmenu, IDM_JOY2, MFCHECK(value == 2)); } -void xmenu_setsound(UINT8 value) { +void menu_setsound(UINT8 value) { xmilcfg.SOUND_SW = value; - CheckMenuItem(GetMenu(hWndMain), IDM_FMBOARD, MFCHECK(value)); + CheckMenuItem(extclass_gethmenu(hWndMain), IDM_FMBOARD, MFCHECK(value)); } -void xmenu_setjoystick(UINT8 value) { +void menu_setjoystick(UINT8 value) { HMENU hmenu; - hmenu = GetMenu(hWndMain); + hmenu = extclass_gethmenu(hWndMain); xmiloscfg.JOYSTICK &= 0x80; xmiloscfg.JOYSTICK |= (value & 0x7f); if (value & 2) { @@ -219,37 +336,30 @@ void xmenu_setjoystick(UINT8 value) { } } -void xmenu_setmouse(UINT8 value) { +void menu_setmouse(UINT8 value) { value &= 1; xmilcfg.MOUSE_SW = value; - CheckMenuItem(GetMenu(hWndMain), IDM_MOUSE, MFCHECK(value)); + CheckMenuItem(extclass_gethmenu(hWndMain), IDM_MOUSE, MFCHECK(value)); } -void xmenu_setcpuspeed(UINT8 value) { - - value &= 1; - xmilcfg.CPU8MHz = value; - CheckMenuItem(GetMenu(hWndMain), IDM_8MHZ, MFCHECK(value)); -} - -void xmenu_setmotorflg(UINT8 value) { +void menu_setmotorflg(UINT8 value) { value &= 1; xmilcfg.MOTOR = value; - CheckMenuItem(GetMenu(hWndMain), IDM_SEEKSND, MFCHECK(value)); + CheckMenuItem(extclass_gethmenu(hWndMain), IDM_SEEKSND, MFCHECK(value)); } -void xmenu_opmlog(UINT8 value) { +void menu_opmlog(UINT8 value) { - CheckMenuItem(GetMenu(hWndMain), IDM_OPMLOG, MFCHECK(value)); + CheckMenuItem(extclass_gethmenu(hWndMain), IDM_OPMLOG, MFCHECK(value)); } -void xmenu_setdispclk(UINT8 value) { +void menu_setdispclk(UINT8 value) { HMENU hmenu; - hmenu = GetMenu(hWndMain); + hmenu = extclass_gethmenu(hWndMain); value &= 3; xmiloscfg.DISPCLK = value; CheckMenuItem(hmenu, IDM_DISPCLOCK, MFCHECK(value & 1)); @@ -258,30 +368,17 @@ void xmenu_setdispclk(UINT8 value) { sysmng_updatecaption(3); } -void xmenu_setskipline(UINT8 value) { - - xmilcfg.SKIP_LINE = value & 1; - CheckMenuItem(GetMenu(hWndMain), IDM_SKIPLINE, MFCHECK(xmilcfg.SKIP_LINE)); - reflesh_palette(); - palandply = 1; -} +void menu_setbtnmode(UINT8 value) { -void xmenu_setbtnmode(UINT8 value) { - - xmilcfg.BTN_MODE = value & 1; - CheckMenuItem(GetMenu(hWndMain), IDM_JOYX, MFCHECK(xmilcfg.BTN_MODE)); + value &= 1; + xmilcfg.BTN_MODE = value; + CheckMenuItem(extclass_gethmenu(hWndMain), IDM_JOYX, MFCHECK(value)); } -void xmenu_setbtnrapid(UINT8 value) { +void menu_setbtnrapid(UINT8 value) { + value &= 1; xmilcfg.BTN_RAPID = value; - CheckMenuItem(GetMenu(hWndMain), IDM_RAPID, MFCHECK(xmilcfg.BTN_RAPID)); -} - -void xmenu_setz80save(UINT8 value) { - - if (!value) { - EnableMenuItem(GetMenu(hWndMain), IDM_Z80SAVE, MF_GRAYED); - } + CheckMenuItem(extclass_gethmenu(hWndMain), IDM_RAPID, MFCHECK(value)); }