|
|
| version 1.4, 2003/10/30 18:09:06 | version 1.7, 2003/11/04 15:44:59 |
|---|---|
| Line 3 | Line 3 |
| #include "np2.h" | #include "np2.h" |
| #include "sysmng.h" | #include "sysmng.h" |
| #include "menu.h" | #include "menu.h" |
| #include "np2class.h" | |
| #include "pccore.h" | #include "pccore.h" |
| Line 14 const char *str; | Line 15 const char *str; |
| } SMENUITEM; | } SMENUITEM; |
| static const char smenu_toolwin[] = "&Tool Window"; | static const char smenu_toolwin[] = "&Tool Window"; |
| static const char smenu_keydisp[] = "&Key display"; | |
| static const char smenu_center[] = "&Centering"; | static const char smenu_center[] = "&Centering"; |
| static const char smenu_snap[] = "&Window Snap"; | static const char smenu_snap[] = "&Window Snap"; |
| static const char smenu_bg[] = "&Background"; | static const char smenu_bg[] = "&Background"; |
| static const char smenu_bgsnd[] = "Background &Sound"; | static const char smenu_bgsnd[] = "Background &Sound"; |
| static const char smenu_keydisp[] = "&Key display"; | |
| static const char smenu_320x200[] = " 320x200"; | static const char smenu_320x200[] = " 320x200"; |
| static const char smenu_480x300[] = " 480x300"; | static const char smenu_480x300[] = " 480x300"; |
| static const char smenu_640x400[] = " 640x400"; | static const char smenu_640x400[] = " 640x400"; |
| Line 28 static const char smenu_1280x800[] = "12 | Line 29 static const char smenu_1280x800[] = "12 |
| static const char smenu_memdump[] = "&Memory Dump"; | static const char smenu_memdump[] = "&Memory Dump"; |
| static const char smenu_dbguty[] = "&Debug Utility"; | static const char smenu_dbguty[] = "&Debug Utility"; |
| static const char menu_i286save[] = "&i286 save"; | |
| static const SMENUITEM smenuitem[] = { | static const SMENUITEM smenuitem[] = { |
| {smenu_toolwin, IDM_TOOLWIN}, | {smenu_toolwin, IDM_TOOLWIN}, |
| {smenu_keydisp, IDM_KEYDISP}, | |
| {NULL, 0}, | |
| {smenu_center, IDM_SCREENCENTER}, | {smenu_center, IDM_SCREENCENTER}, |
| {smenu_snap, IDM_SNAPENABLE}, | {smenu_snap, IDM_SNAPENABLE}, |
| {smenu_bg, IDM_BACKGROUND}, | {smenu_bg, IDM_BACKGROUND}, |
| {smenu_bgsnd, IDM_BGSOUND}, | {smenu_bgsnd, IDM_BGSOUND}, |
| {smenu_keydisp, IDM_KEYDISP}, | |
| {NULL, 0}, | {NULL, 0}, |
| {smenu_320x200, IDM_SCRNMUL4}, | {smenu_320x200, IDM_SCRNMUL4}, |
| {smenu_480x300, IDM_SCRNMUL6}, | {smenu_480x300, IDM_SCRNMUL6}, |
| Line 45 static const SMENUITEM smenuitem[] = { | Line 48 static const SMENUITEM smenuitem[] = { |
| {smenu_1280x800, IDM_SCRNMUL16}, | {smenu_1280x800, IDM_SCRNMUL16}, |
| {NULL, 0}}; | {NULL, 0}}; |
| void sysmenu_init(void) { | void sysmenu_initialize(void) { |
| HMENU hMenu; | HMENU hMenu; |
| UINT i; | UINT i; |
| Line 61 void sysmenu_init(void) { | Line 64 void sysmenu_init(void) { |
| } | } |
| } | } |
| if (np2oscfg.I286SAVE) { | if (np2oscfg.I286SAVE) { |
| InsertMenu(hMenu, 6, MF_BYPOSITION | MF_STRING, IDM_MEMORYDUMP, | InsertMenu(hMenu, 7, MF_BYPOSITION | MF_STRING, IDM_MEMORYDUMP, |
| smenu_memdump); | smenu_memdump); |
| InsertMenu(hMenu, 7, MF_BYPOSITION | MF_STRING, IDM_DEBUGUTY, | InsertMenu(hMenu, 8, MF_BYPOSITION | MF_STRING, IDM_DEBUGUTY, |
| smenu_dbguty); | smenu_dbguty); |
| } | } |
| } | } |
| void xmenu_settoolwin(BYTE value) { | void sysmenu_settoolwin(BYTE value) { |
| value &= 1; | value &= 1; |
| np2oscfg.toolwin = value; | np2oscfg.toolwin = value; |
| Line 76 void xmenu_settoolwin(BYTE value) { | Line 79 void xmenu_settoolwin(BYTE value) { |
| IDM_TOOLWIN, MFCHECK(value)); | IDM_TOOLWIN, MFCHECK(value)); |
| } | } |
| void xmenu_setwinsnap(BYTE value) { | void sysmenu_setkeydisp(BYTE value) { |
| value &= 1; | |
| np2oscfg.keydisp = value; | |
| CheckMenuItem(GetSystemMenu(hWndMain, FALSE), | |
| IDM_KEYDISP, MFCHECK(value)); | |
| } | |
| void sysmenu_setwinsnap(BYTE value) { | |
| value &= 1; | value &= 1; |
| np2oscfg.WINSNAP = value; | np2oscfg.WINSNAP = value; |
| Line 84 void xmenu_setwinsnap(BYTE value) { | Line 95 void xmenu_setwinsnap(BYTE value) { |
| IDM_SNAPENABLE, MFCHECK(value)); | IDM_SNAPENABLE, MFCHECK(value)); |
| } | } |
| void xmenu_setbackground(BYTE value) { | void sysmenu_setbackground(BYTE value) { |
| HMENU hmenu; | HMENU hmenu; |
| Line 101 void xmenu_setbackground(BYTE value) { | Line 112 void xmenu_setbackground(BYTE value) { |
| } | } |
| } | } |
| void xmenu_setbgsound(BYTE value) { | void sysmenu_setbgsound(BYTE value) { |
| np2oscfg.background &= 1; | np2oscfg.background &= 1; |
| np2oscfg.background |= (value & 2); | np2oscfg.background |= (value & 2); |
| Line 109 void xmenu_setbgsound(BYTE value) { | Line 120 void xmenu_setbgsound(BYTE value) { |
| IDM_BGSOUND, MFCHECK((value & 2) ^ 2)); | IDM_BGSOUND, MFCHECK((value & 2) ^ 2)); |
| } | } |
| void xmenu_setscrnmul(BYTE value) { | void sysmenu_setscrnmul(BYTE value) { |
| HMENU hmenu; | HMENU hmenu; |
| Line 126 void xmenu_setscrnmul(BYTE value) { | Line 137 void xmenu_setscrnmul(BYTE value) { |
| // ---- | // ---- |
| // これってAPIあるのか? | |
| void menu_addmenubar(HMENU popup, HMENU menubar) { | |
| UINT cnt; | |
| UINT pos; | |
| UINT i; | |
| MENUITEMINFO mii; | |
| char str[128]; | |
| HMENU hSubMenu; | |
| cnt = GetMenuItemCount(menubar); | |
| pos = 0; | |
| for (i=0; i<cnt; i++) { | |
| ZeroMemory(&mii, sizeof(mii)); | |
| mii.cbSize = sizeof(mii); | |
| mii.fMask = MIIM_TYPE | MIIM_STATE | MIIM_ID | MIIM_SUBMENU | | |
| MIIM_DATA; | |
| mii.dwTypeData = str; | |
| mii.cch = sizeof(str); | |
| if (GetMenuItemInfo(menubar, i, TRUE, &mii)) { | |
| if (mii.hSubMenu) { | |
| hSubMenu = CreatePopupMenu(); | |
| menu_addmenubar(hSubMenu, mii.hSubMenu); | |
| mii.hSubMenu = hSubMenu; | |
| } | |
| InsertMenuItem(popup, pos, TRUE, &mii); | |
| pos++; | |
| } | |
| } | |
| } | |
| // ---- | |
| void xmenu_disablewindow(void) { | void xmenu_disablewindow(void) { |
| HMENU hmenu; | HMENU hmenu; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| EnableMenuItem(hmenu, IDM_WINDOW, MF_GRAYED); | EnableMenuItem(hmenu, IDM_WINDOW, MF_GRAYED); |
| EnableMenuItem(hmenu, IDM_FULLSCREEN, MF_GRAYED); | EnableMenuItem(hmenu, IDM_FULLSCREEN, MF_GRAYED); |
| } | } |
| Line 139 void xmenu_setroltate(BYTE value) { | Line 184 void xmenu_setroltate(BYTE value) { |
| HMENU hmenu; | HMENU hmenu; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_ROLNORMAL, MFCHECK(value == 0)); | CheckMenuItem(hmenu, IDM_ROLNORMAL, MFCHECK(value == 0)); |
| CheckMenuItem(hmenu, IDM_ROLLEFT, MFCHECK(value == 1)); | CheckMenuItem(hmenu, IDM_ROLLEFT, MFCHECK(value == 1)); |
| CheckMenuItem(hmenu, IDM_ROLRIGHT, MFCHECK(value == 2)); | CheckMenuItem(hmenu, IDM_ROLRIGHT, MFCHECK(value == 2)); |
| Line 149 void xmenu_setdispmode(BYTE value) { | Line 194 void xmenu_setdispmode(BYTE value) { |
| value &= 1; | value &= 1; |
| np2cfg.DISPSYNC = value; | np2cfg.DISPSYNC = value; |
| CheckMenuItem(GetMenu(hWndMain), IDM_DISPSYNC, MFCHECK(value)); | CheckMenuItem(np2class_gethmenu(hWndMain), IDM_DISPSYNC, MFCHECK(value)); |
| } | } |
| void xmenu_setraster(BYTE value) { | void xmenu_setraster(BYTE value) { |
| value &= 1; | value &= 1; |
| np2cfg.RASTER = value; | np2cfg.RASTER = value; |
| CheckMenuItem(GetMenu(hWndMain), IDM_RASTER, MFCHECK(value)); | CheckMenuItem(np2class_gethmenu(hWndMain), IDM_RASTER, MFCHECK(value)); |
| } | } |
| void xmenu_setwaitflg(BYTE value) { | void xmenu_setwaitflg(BYTE value) { |
| value &= 1; | value &= 1; |
| np2oscfg.NOWAIT = value; | np2oscfg.NOWAIT = value; |
| CheckMenuItem(GetMenu(hWndMain), IDM_NOWAIT, MFCHECK(value)); | CheckMenuItem(np2class_gethmenu(hWndMain), IDM_NOWAIT, MFCHECK(value)); |
| } | } |
| void xmenu_setframe(BYTE value) { | void xmenu_setframe(BYTE value) { |
| Line 171 void xmenu_setframe(BYTE value) { | Line 216 void xmenu_setframe(BYTE value) { |
| HMENU hmenu; | HMENU hmenu; |
| np2oscfg.DRAW_SKIP = value; | np2oscfg.DRAW_SKIP = value; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_AUTOFPS, MFCHECK(value == 0)); | CheckMenuItem(hmenu, IDM_AUTOFPS, MFCHECK(value == 0)); |
| CheckMenuItem(hmenu, IDM_60FPS, MFCHECK(value == 1)); | CheckMenuItem(hmenu, IDM_60FPS, MFCHECK(value == 1)); |
| CheckMenuItem(hmenu, IDM_30FPS, MFCHECK(value == 2)); | CheckMenuItem(hmenu, IDM_30FPS, MFCHECK(value == 2)); |
| Line 187 void xmenu_setkey(BYTE value) { | Line 232 void xmenu_setkey(BYTE value) { |
| value = 0; | value = 0; |
| } | } |
| np2cfg.KEY_MODE = value; | np2cfg.KEY_MODE = value; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_KEY, MFCHECK(value == 0)); | CheckMenuItem(hmenu, IDM_KEY, MFCHECK(value == 0)); |
| CheckMenuItem(hmenu, IDM_JOY1, MFCHECK(value == 1)); | CheckMenuItem(hmenu, IDM_JOY1, MFCHECK(value == 1)); |
| CheckMenuItem(hmenu, IDM_JOY2, MFCHECK(value == 2)); | CheckMenuItem(hmenu, IDM_JOY2, MFCHECK(value == 2)); |
| Line 198 void xmenu_setxshift(BYTE value) { | Line 243 void xmenu_setxshift(BYTE value) { |
| HMENU hmenu; | HMENU hmenu; |
| np2cfg.XSHIFT = value; | np2cfg.XSHIFT = value; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_XSHIFT, MFCHECK(value & 1)); | CheckMenuItem(hmenu, IDM_XSHIFT, MFCHECK(value & 1)); |
| CheckMenuItem(hmenu, IDM_XCTRL, MFCHECK(value & 2)); | CheckMenuItem(hmenu, IDM_XCTRL, MFCHECK(value & 2)); |
| CheckMenuItem(hmenu, IDM_XGRPH, MFCHECK(value & 4)); | CheckMenuItem(hmenu, IDM_XGRPH, MFCHECK(value & 4)); |
| Line 212 void xmenu_setf12copy(BYTE value) { | Line 257 void xmenu_setf12copy(BYTE value) { |
| value = 0; | value = 0; |
| } | } |
| np2oscfg.F12COPY = value; | np2oscfg.F12COPY = value; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_F12MOUSE, MFCHECK(value == 0)); | CheckMenuItem(hmenu, IDM_F12MOUSE, MFCHECK(value == 0)); |
| CheckMenuItem(hmenu, IDM_F12COPY, MFCHECK(value == 1)); | CheckMenuItem(hmenu, IDM_F12COPY, MFCHECK(value == 1)); |
| CheckMenuItem(hmenu, IDM_F12STOP, MFCHECK(value == 2)); | CheckMenuItem(hmenu, IDM_F12STOP, MFCHECK(value == 2)); |
| Line 226 void xmenu_setbeepvol(BYTE value) { | Line 271 void xmenu_setbeepvol(BYTE value) { |
| value &= 3; | value &= 3; |
| np2cfg.BEEP_VOL = value; | np2cfg.BEEP_VOL = value; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_BEEPOFF, MFCHECK(value == 0)); | CheckMenuItem(hmenu, IDM_BEEPOFF, MFCHECK(value == 0)); |
| CheckMenuItem(hmenu, IDM_BEEPLOW, MFCHECK(value == 1)); | CheckMenuItem(hmenu, IDM_BEEPLOW, MFCHECK(value == 1)); |
| CheckMenuItem(hmenu, IDM_BEEPMID, MFCHECK(value == 2)); | CheckMenuItem(hmenu, IDM_BEEPMID, MFCHECK(value == 2)); |
| Line 239 void xmenu_setsound(BYTE value) { | Line 284 void xmenu_setsound(BYTE value) { |
| sysmng_update(SYS_UPDATESBOARD); | sysmng_update(SYS_UPDATESBOARD); |
| np2cfg.SOUND_SW = value; | np2cfg.SOUND_SW = value; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_NOSOUND, MFCHECK(value == 0)); | CheckMenuItem(hmenu, IDM_NOSOUND, MFCHECK(value == 0)); |
| CheckMenuItem(hmenu, IDM_PC9801_14, MFCHECK(value & 1)); | CheckMenuItem(hmenu, IDM_PC9801_14, MFCHECK(value & 1)); |
| CheckMenuItem(hmenu, IDM_PC9801_26K, MFCHECK(value & 2)); | CheckMenuItem(hmenu, IDM_PC9801_26K, MFCHECK(value & 2)); |
| Line 255 void xmenu_setmotorflg(BYTE value) { | Line 300 void xmenu_setmotorflg(BYTE value) { |
| value &= 1; | value &= 1; |
| np2cfg.MOTOR = value; | np2cfg.MOTOR = value; |
| CheckMenuItem(GetMenu(hWndMain), IDM_SEEKSND, MFCHECK(value)); | CheckMenuItem(np2class_gethmenu(hWndMain), IDM_SEEKSND, MFCHECK(value)); |
| } | } |
| void xmenu_setextmem(BYTE value) { | void xmenu_setextmem(BYTE value) { |
| Line 264 void xmenu_setextmem(BYTE value) { | Line 309 void xmenu_setextmem(BYTE value) { |
| sysmng_update(SYS_UPDATEMEMORY); | sysmng_update(SYS_UPDATEMEMORY); |
| np2cfg.EXTMEM = value; | np2cfg.EXTMEM = value; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_MEM640, MFCHECK(value == 0)); | CheckMenuItem(hmenu, IDM_MEM640, MFCHECK(value == 0)); |
| CheckMenuItem(hmenu, IDM_MEM16, MFCHECK(value == 1)); | CheckMenuItem(hmenu, IDM_MEM16, MFCHECK(value == 1)); |
| CheckMenuItem(hmenu, IDM_MEM36, MFCHECK(value == 3)); | CheckMenuItem(hmenu, IDM_MEM36, MFCHECK(value == 3)); |
| Line 275 void xmenu_setmouse(BYTE value) { | Line 320 void xmenu_setmouse(BYTE value) { |
| value &= 1; | value &= 1; |
| np2oscfg.MOUSE_SW = value; | np2oscfg.MOUSE_SW = value; |
| CheckMenuItem(GetMenu(hWndMain), IDM_MOUSE, MFCHECK(value)); | CheckMenuItem(np2class_gethmenu(hWndMain), IDM_MOUSE, MFCHECK(value)); |
| } | } |
| void xmenu_sets98logging(BYTE value) { | void xmenu_sets98logging(BYTE value) { |
| CheckMenuItem(GetMenu(hWndMain), IDM_S98LOGGING, MFCHECK(value)); | CheckMenuItem(np2class_gethmenu(hWndMain), |
| IDM_S98LOGGING, MFCHECK(value)); | |
| } | } |
| void xmenu_setshortcut(BYTE value) { | void xmenu_setshortcut(BYTE value) { |
| Line 288 void xmenu_setshortcut(BYTE value) { | Line 334 void xmenu_setshortcut(BYTE value) { |
| HMENU hmenu; | HMENU hmenu; |
| np2oscfg.shortcut = value; | np2oscfg.shortcut = value; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_ALTENTER, MFCHECK(value & 1)); | CheckMenuItem(hmenu, IDM_ALTENTER, MFCHECK(value & 1)); |
| CheckMenuItem(hmenu, IDM_ALTF4, MFCHECK(value & 2)); | CheckMenuItem(hmenu, IDM_ALTF4, MFCHECK(value & 2)); |
| } | } |
| Line 299 void xmenu_setdispclk(BYTE value) { | Line 345 void xmenu_setdispclk(BYTE value) { |
| value &= 3; | value &= 3; |
| np2oscfg.DISPCLK = value; | np2oscfg.DISPCLK = value; |
| hmenu = GetMenu(hWndMain); | hmenu = np2class_gethmenu(hWndMain); |
| CheckMenuItem(hmenu, IDM_DISPCLOCK, MFCHECK(value & 1)); | CheckMenuItem(hmenu, IDM_DISPCLOCK, MFCHECK(value & 1)); |
| CheckMenuItem(hmenu, IDM_DISPFRAME, MFCHECK(value & 2)); | CheckMenuItem(hmenu, IDM_DISPFRAME, MFCHECK(value & 2)); |
| sysmng_workclockrenewal(); | sysmng_workclockrenewal(); |
| Line 310 void xmenu_setbtnmode(BYTE value) { | Line 356 void xmenu_setbtnmode(BYTE value) { |
| value &= 1; | value &= 1; |
| np2cfg.BTN_MODE = value; | np2cfg.BTN_MODE = value; |
| CheckMenuItem(GetMenu(hWndMain), IDM_JOYX, MFCHECK(value)); | CheckMenuItem(np2class_gethmenu(hWndMain), IDM_JOYX, MFCHECK(value)); |
| } | } |
| void xmenu_setbtnrapid(BYTE value) { | void xmenu_setbtnrapid(BYTE value) { |
| value &= 1; | value &= 1; |
| np2cfg.BTN_RAPID = value; | np2cfg.BTN_RAPID = value; |
| CheckMenuItem(GetMenu(hWndMain), IDM_RAPID, MFCHECK(value)); | CheckMenuItem(np2class_gethmenu(hWndMain), IDM_RAPID, MFCHECK(value)); |
| } | } |
| void xmenu_setmsrapid(BYTE value) { | void xmenu_setmsrapid(BYTE value) { |
| value &= 1; | value &= 1; |
| np2cfg.MOUSERAPID = value; | np2cfg.MOUSERAPID = value; |
| CheckMenuItem(GetMenu(hWndMain), IDM_MSRAPID, MFCHECK(value)); | CheckMenuItem(np2class_gethmenu(hWndMain), IDM_MSRAPID, MFCHECK(value)); |
| } | } |
| void xmenu_setsstp(BYTE value) { | void xmenu_setsstp(BYTE value) { |
| value &= 1; | value &= 1; |
| np2oscfg.sstp = value; | np2oscfg.sstp = value; |
| CheckMenuItem(GetMenu(hWndMain), IDM_SSTP, MFCHECK(value)); | CheckMenuItem(np2class_gethmenu(hWndMain), IDM_SSTP, MFCHECK(value)); |
| } | } |
| void xmenu_seti286save(BYTE value) { | void xmenu_seti286save(BYTE value) { |
| if (!value) { | if (value) { |
| EnableMenuItem(GetMenu(hWndMain), IDM_I286SAVE, MF_GRAYED); | InsertMenu(GetSubMenu(np2class_gethmenu(hWndMain), 6), 10, |
| MF_BYPOSITION | MF_STRING, IDM_I286SAVE, menu_i286save); | |
| } | } |
| } | } |