--- np2/win9x/menu.cpp 2007/10/26 14:38:34 1.27 +++ np2/win9x/menu.cpp 2007/11/11 07:11:26 1.29 @@ -10,73 +10,8 @@ #define MFCHECK(a) ((a)?MF_CHECKED:MF_UNCHECKED) -typedef struct { - UINT16 id; - UINT16 str; -} MENUITEMS; - - -// これってAPIあるのか? -void menu_addmenubar(HMENU popup, HMENU menubar) { - - UINT cnt; - UINT pos; - UINT i; - MENUITEMINFO mii; - TCHAR str[128]; - HMENU hSubMenu; - - cnt = GetMenuItemCount(menubar); - pos = 0; - 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++; - } -} - -static BOOL searchchildmenu(HMENU hMenu, UINT uID, HMENU *phmenuRet, UINT *puPos) +static BOOL searchchildmenu(HMENU hMenu, UINT uID, + HMENU *phmenuRet, UINT *puPos) { UINT nCount; UINT i; @@ -102,7 +37,8 @@ static BOOL searchchildmenu(HMENU hMenu, } return TRUE; } - else if ((mii.hSubMenu) && (searchchildmenu(mii.hSubMenu, uID, phmenuRet, puPos))) + else if ((mii.hSubMenu) && + (searchchildmenu(mii.hSubMenu, uID, phmenuRet, puPos))) { return TRUE; } @@ -111,7 +47,8 @@ static BOOL searchchildmenu(HMENU hMenu, return FALSE; } -static BOOL searchsubmenu(HMENU hMenu, HMENU hmenuTarget, HMENU *phmenuRet, UINT *puPos) +static BOOL searchsubmenu(HMENU hMenu, HMENU hmenuTarget, + HMENU *phmenuRet, UINT *puPos) { UINT nCount; UINT i; @@ -146,48 +83,118 @@ static BOOL searchsubmenu(HMENU hMenu, H return FALSE; } +// これってAPIあるのか? +static UINT addmenu(HMENU hMenu, UINT uPos, HMENU hmenuAdd, BOOL bSeparator) +{ + UINT uCount; + UINT uAdded; + UINT i; + MENUITEMINFO mii; + TCHAR szString[128]; + HMENU hmenuSub; + + uCount = GetMenuItemCount(hmenuAdd); + uAdded = 0; + for (i=0; iitem, 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(g_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) { HMENU hmenu; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); EnableMenuItem(hmenu, IDM_WINDOW, MF_GRAYED); EnableMenuItem(hmenu, IDM_FULLSCREEN, MF_GRAYED); } @@ -424,7 +333,7 @@ void xmenu_setroltate(UINT8 value) { HMENU hmenu; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); CheckMenuItem(hmenu, IDM_ROLNORMAL, MFCHECK(value == 0)); CheckMenuItem(hmenu, IDM_ROLLEFT, MFCHECK(value == 1)); CheckMenuItem(hmenu, IDM_ROLRIGHT, MFCHECK(value == 2)); @@ -434,21 +343,21 @@ void xmenu_setdispmode(UINT8 value) { value &= 1; np2cfg.DISPSYNC = value; - CheckMenuItem(np2class_gethmenu(hWndMain), IDM_DISPSYNC, MFCHECK(value)); + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_DISPSYNC, MFCHECK(value)); } void xmenu_setraster(UINT8 value) { value &= 1; np2cfg.RASTER = value; - CheckMenuItem(np2class_gethmenu(hWndMain), IDM_RASTER, MFCHECK(value)); + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_RASTER, MFCHECK(value)); } void xmenu_setwaitflg(UINT8 value) { value &= 1; np2oscfg.NOWAIT = value; - CheckMenuItem(np2class_gethmenu(hWndMain), IDM_NOWAIT, MFCHECK(value)); + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_NOWAIT, MFCHECK(value)); } void xmenu_setframe(UINT8 value) { @@ -456,7 +365,7 @@ void xmenu_setframe(UINT8 value) { HMENU hmenu; np2oscfg.DRAW_SKIP = value; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); CheckMenuItem(hmenu, IDM_AUTOFPS, MFCHECK(value == 0)); CheckMenuItem(hmenu, IDM_60FPS, MFCHECK(value == 1)); CheckMenuItem(hmenu, IDM_30FPS, MFCHECK(value == 2)); @@ -472,7 +381,7 @@ void xmenu_setkey(UINT8 value) { value = 0; } np2cfg.KEY_MODE = value; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); CheckMenuItem(hmenu, IDM_KEY, MFCHECK(value == 0)); CheckMenuItem(hmenu, IDM_JOY1, MFCHECK(value == 1)); CheckMenuItem(hmenu, IDM_JOY2, MFCHECK(value == 2)); @@ -483,7 +392,7 @@ void xmenu_setxshift(UINT8 value) { HMENU hmenu; np2cfg.XSHIFT = value; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); CheckMenuItem(hmenu, IDM_XSHIFT, MFCHECK(value & 1)); CheckMenuItem(hmenu, IDM_XCTRL, MFCHECK(value & 2)); CheckMenuItem(hmenu, IDM_XGRPH, MFCHECK(value & 4)); @@ -497,7 +406,7 @@ void xmenu_setf12copy(UINT8 value) { value = 0; } np2oscfg.F12COPY = value; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); CheckMenuItem(hmenu, IDM_F12MOUSE, MFCHECK(value == 0)); CheckMenuItem(hmenu, IDM_F12COPY, MFCHECK(value == 1)); CheckMenuItem(hmenu, IDM_F12STOP, MFCHECK(value == 2)); @@ -513,7 +422,7 @@ void xmenu_setbeepvol(UINT8 value) { value &= 3; np2cfg.BEEP_VOL = value; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); CheckMenuItem(hmenu, IDM_BEEPOFF, MFCHECK(value == 0)); CheckMenuItem(hmenu, IDM_BEEPLOW, MFCHECK(value == 1)); CheckMenuItem(hmenu, IDM_BEEPMID, MFCHECK(value == 2)); @@ -526,7 +435,7 @@ void xmenu_setsound(UINT8 value) { sysmng_update(SYS_UPDATESBOARD); np2cfg.SOUND_SW = value; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); CheckMenuItem(hmenu, IDM_NOSOUND, MFCHECK(value == 0x00)); CheckMenuItem(hmenu, IDM_PC9801_14, MFCHECK(value == 0x01)); CheckMenuItem(hmenu, IDM_PC9801_26K, MFCHECK(value == 0x02)); @@ -547,14 +456,14 @@ void xmenu_setjastsound(UINT8 value) { value &= 1; np2oscfg.jastsnd = value; - CheckMenuItem(np2class_gethmenu(hWndMain), IDM_JASTSOUND, MFCHECK(value)); + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_JASTSOUND, MFCHECK(value)); } void xmenu_setmotorflg(UINT8 value) { value &= 1; np2cfg.MOTOR = value; - CheckMenuItem(np2class_gethmenu(hWndMain), IDM_SEEKSND, MFCHECK(value)); + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_SEEKSND, MFCHECK(value)); } void xmenu_setextmem(UINT8 value) { @@ -563,7 +472,7 @@ void xmenu_setextmem(UINT8 value) { sysmng_update(SYS_UPDATEMEMORY); np2cfg.EXTMEM = value; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); CheckMenuItem(hmenu, IDM_MEM640, MFCHECK(value == 0)); CheckMenuItem(hmenu, IDM_MEM16, MFCHECK(value == 1)); CheckMenuItem(hmenu, IDM_MEM36, MFCHECK(value == 3)); @@ -576,13 +485,13 @@ void xmenu_setmouse(UINT8 value) { value &= 1; np2oscfg.MOUSE_SW = value; - CheckMenuItem(np2class_gethmenu(hWndMain), IDM_MOUSE, MFCHECK(value)); + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_MOUSE, MFCHECK(value)); } #if defined(SUPPORT_S98) void xmenu_sets98logging(UINT8 value) { - CheckMenuItem(np2class_gethmenu(hWndMain), + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_S98LOGGING, MFCHECK(value)); } #endif @@ -590,7 +499,7 @@ void xmenu_sets98logging(UINT8 value) { #if defined(SUPPORT_WAVEREC) void xmenu_setwaverec(UINT8 value) { - CheckMenuItem(np2class_gethmenu(hWndMain), + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_WAVEREC, MFCHECK(value)); } #endif @@ -600,7 +509,7 @@ void xmenu_setshortcut(UINT8 value) { HMENU hmenu; np2oscfg.shortcut = value; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); CheckMenuItem(hmenu, IDM_ALTENTER, MFCHECK(value & 1)); CheckMenuItem(hmenu, IDM_ALTF4, MFCHECK(value & 2)); } @@ -611,7 +520,7 @@ void xmenu_setdispclk(UINT8 value) { value &= 3; np2oscfg.DISPCLK = value; - hmenu = np2class_gethmenu(hWndMain); + hmenu = np2class_gethmenu(g_hWndMain); CheckMenuItem(hmenu, IDM_DISPCLOCK, MFCHECK(value & 1)); CheckMenuItem(hmenu, IDM_DISPFRAME, MFCHECK(value & 2)); sysmng_workclockrenewal(); @@ -622,27 +531,27 @@ void xmenu_setbtnmode(UINT8 value) { value &= 1; np2cfg.BTN_MODE = value; - CheckMenuItem(np2class_gethmenu(hWndMain), IDM_JOYX, MFCHECK(value)); + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_JOYX, MFCHECK(value)); } void xmenu_setbtnrapid(UINT8 value) { value &= 1; np2cfg.BTN_RAPID = value; - CheckMenuItem(np2class_gethmenu(hWndMain), IDM_RAPID, MFCHECK(value)); + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_RAPID, MFCHECK(value)); } void xmenu_setmsrapid(UINT8 value) { value &= 1; np2cfg.MOUSERAPID = value; - CheckMenuItem(np2class_gethmenu(hWndMain), IDM_MSRAPID, MFCHECK(value)); + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_MSRAPID, MFCHECK(value)); } void xmenu_setsstp(UINT8 value) { value &= 1; np2oscfg.sstp = value; - CheckMenuItem(np2class_gethmenu(hWndMain), IDM_SSTP, MFCHECK(value)); + CheckMenuItem(np2class_gethmenu(g_hWndMain), IDM_SSTP, MFCHECK(value)); }