--- np2/win9x/np2.cpp 2003/10/28 22:05:46 1.15 +++ np2/win9x/np2.cpp 2003/11/03 00:49:55 1.23 @@ -28,6 +28,7 @@ #ifdef USE_ROMEO #include "juliet.h" #endif +#include "np2class.h" #include "dialog.h" #include "memory.h" #include "pccore.h" @@ -70,12 +71,11 @@ static char szClassName[] = "NP2-MainWi {0, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 {0, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 0xffffff, 0xffbf6a, 0, 0, - 0, 1, 0, 9801, 0, 0, 0, 0, 0, 0}; // ver0.38 + 0, 1, 0, 9801, 0, 0, 0, 0, 0, 0, 0}; // ver0.38 char fddfolder[MAX_PATH]; char hddfolder[MAX_PATH]; char bmpfilefolder[MAX_PATH]; - char mimpideffile[MAX_PATH]; char modulefile[MAX_PATH]; static UINT framecnt = 0; @@ -86,17 +86,50 @@ static BYTE np2stopemulate = 0; static int np2opening = 1; static int np2quitmsg = 0; HMENU hStat = NULL; +static BYTE scrnmode; + WINLOC wl; + WINLOCEX wlex; -static const char np2help[] = "np2.hlp"; -static const char np2resume[] = "sav"; +static const char np2help[] = "np2.chm"; +static const char np2flagext[] = "S%02d"; +static const char np2resumeext[] = "sav"; -static BYTE scrnmode; +static void winuienter(void) { + + soundmng_disable(SNDPROC_MAIN); + scrnmng_topwinui(); +} + +static void winuileave(void) { + + scrnmng_clearwinui(); + soundmng_enable(SNDPROC_MAIN); +} + +WINLOCEX np2_winlocexallwin(HWND base) { + + HWND list[3]; + UINT i; + + list[0] = hWndMain; + list[1] = toolwin_gethwnd(); + list[2] = keydisp_gethwnd(); + for (i=0; i<3; i++) { + if (list[i] == base) { + list[i] = NULL; + } + } + if (base != hWndMain) { // hWndMainのみ全体移動 + base = NULL; + } + return(winlocex_create(base, list, 3)); +} static void changescreen(BYTE newmode) { - BYTE change; - BYTE renewal; + BYTE change; + BYTE renewal; change = scrnmode ^ newmode; renewal = (change & SCRNMODE_FULLSCREEN); @@ -108,11 +141,15 @@ static void changescreen(BYTE newmode) { } if (renewal) { if (renewal & SCRNMODE_FULLSCREEN) { - toolwin_close(); + toolwin_destroy(); + keydisp_destroy(); + } + else if (renewal & SCRNMODE_ROTATEMASK) { + winlocex_destroy(wlex); + wlex = np2_winlocexallwin(hWndMain); } soundmng_stop(); mouse_running(MOUSE_STOP); - keydisp_destroy(); scrnmng_destroy(); if (scrnmng_create(newmode) == SUCCESS) { scrnmode = newmode; @@ -124,9 +161,20 @@ static void changescreen(BYTE newmode) { } } scrndraw_redraw(); - if ((renewal & SCRNMODE_FULLSCREEN) && - (!scrnmng_isfullscreen()) && (np2oscfg.toolwin)) { - toolwin_open(); + if (renewal & SCRNMODE_FULLSCREEN) { + if (!scrnmng_isfullscreen()) { + if (np2oscfg.toolwin) { + toolwin_create(); + } + if (np2oscfg.keydisp) { + keydisp_create(); + } + } + } + else if (renewal & SCRNMODE_ROTATEMASK) { + winlocex_move(wlex); + winlocex_destroy(wlex); + wlex = NULL; } mouse_running(MOUSE_CONT); soundmng_play(); @@ -161,7 +209,7 @@ void np2active_renewal(void) { / if (np2break & (~NP2BREAK_MAIN)) { np2stopemulate = 2; - soundmng_disable(); + soundmng_disable(SNDPROC_MASTER); } else if (np2break & NP2BREAK_MAIN) { if (np2oscfg.background & 1) { @@ -171,15 +219,15 @@ void np2active_renewal(void) { / np2stopemulate = 0; } if (np2oscfg.background) { - soundmng_disable(); + soundmng_disable(SNDPROC_MASTER); } else { - soundmng_enable(); + soundmng_enable(SNDPROC_MASTER); } } else { np2stopemulate = 0; - soundmng_enable(); + soundmng_enable(SNDPROC_MASTER); } } @@ -222,8 +270,7 @@ static int flagload(const char *ext, con char buf[1024]; getstatfilename(path, ext, sizeof(path)); - soundmng_stop(); - scrnmng_topwinui(); + winuienter(); id = IDYES; ret = statsave_check(path, buf, sizeof(buf)); if (ret & (~NP2FLAG_DISKCHG)) { @@ -243,26 +290,13 @@ static int flagload(const char *ext, con } sysmng_workclockreset(); sysmng_updatecaption(1); - scrnmng_clearwinui(); - soundmng_play(); + winuileave(); return(id); } // ---- proc -static void winuienter(void) { - - soundmng_stop(); - scrnmng_topwinui(); -} - -static void winuileave(void) { - - scrnmng_clearwinui(); - soundmng_play(); -} - LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; @@ -270,6 +304,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT HDC hdc; BOOL b; UINT update; + HWND subwin; switch (msg) { case WM_CREATE: @@ -283,45 +318,54 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT update = 0; switch(wParam) { case IDM_TOOLWIN: - xmenu_settoolwin(np2oscfg.toolwin ^ 1); + sysmenu_settoolwin(np2oscfg.toolwin ^ 1); if (np2oscfg.toolwin) { - toolwin_open(); + toolwin_create(); } else { - toolwin_close(); + toolwin_destroy(); } update |= SYS_UPDATEOSCFG; break; + case IDM_KEYDISP: + sysmenu_setkeydisp(np2oscfg.keydisp ^ 1); + if (np2oscfg.keydisp) { + keydisp_create(); + } + else { + keydisp_destroy(); + } + break; + case IDM_SCREENCENTER: if ((!scrnmng_isfullscreen()) && (!(GetWindowLong(hWnd, GWL_STYLE) & (WS_MAXIMIZE | WS_MINIMIZE)))) { - toolwin_movingstart(); + winlocex_destroy(wlex); + wlex = np2_winlocexallwin(hWnd); wincentering(hWnd); - toolwin_movingend(); + winlocex_move(wlex); + winlocex_destroy(wlex); + wlex = NULL; } break; case IDM_SNAPENABLE: - xmenu_setwinsnap(np2oscfg.WINSNAP ^ 1); + sysmenu_setwinsnap(np2oscfg.WINSNAP ^ 1); update |= SYS_UPDATEOSCFG; break; case IDM_BACKGROUND: - xmenu_setbackground(np2oscfg.background ^ 1); + sysmenu_setbackground(np2oscfg.background ^ 1); update |= SYS_UPDATEOSCFG; break; case IDM_BGSOUND: - xmenu_setbgsound(np2oscfg.background ^ 2); + sysmenu_setbgsound(np2oscfg.background ^ 2); update |= SYS_UPDATEOSCFG; break; - case IDM_KEYDISP: - keydisp_create(); - break; - case IDM_MEMORYDUMP: debugsub_memorydump(); break; @@ -338,11 +382,30 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case IDM_SCRNMUL16: if ((!scrnmng_isfullscreen()) && !(GetWindowLong(hWndMain, GWL_STYLE) & WS_MINIMIZE)) { - xmenu_setscrnmul(wParam - IDM_SCRNMUL); + sysmenu_setscrnmul(wParam - IDM_SCRNMUL); scrnmng_setmultiple(wParam - IDM_SCRNMUL); } break; + case SC_MINIMIZE: + winlocex_destroy(wlex); + wlex = np2_winlocexallwin(hWnd); + winlocex_close(wlex); + winlocex_destroy(wlex); + wlex = NULL; + return(DefWindowProc(hWnd, msg, wParam, lParam)); + + case SC_RESTORE: + subwin = toolwin_gethwnd(); + if (subwin) { + ShowWindow(subwin, SW_SHOWNOACTIVATE); + } + subwin = keydisp_gethwnd(); + if (subwin) { + ShowWindow(subwin, SW_SHOWNOACTIVATE); + } + return(DefWindowProc(hWnd, msg, wParam, lParam)); + default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } @@ -547,19 +610,31 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case IDM_F12MOUSE: xmenu_setf12copy(0); - keystat_resetcopyhelp(); + winkbd_resetf12(); update |= SYS_UPDATECFG; break; case IDM_F12COPY: xmenu_setf12copy(1); - keystat_resetcopyhelp(); + winkbd_resetf12(); update |= SYS_UPDATECFG; break; case IDM_F12STOP: xmenu_setf12copy(2); - keystat_resetcopyhelp(); + winkbd_resetf12(); + update |= SYS_UPDATECFG; + break; + + case IDM_F12EQU: + xmenu_setf12copy(3); + winkbd_resetf12(); + update |= SYS_UPDATECFG; + break; + + case IDM_F12COMMA: + xmenu_setf12copy(4); + winkbd_resetf12(); update |= SYS_UPDATECFG; break; @@ -803,14 +878,14 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT if ((LOWORD(wParam) >= IDM_FLAGSAVE) && (LOWORD(wParam) < IDM_FLAGSAVE + STATSAVEMAX)) { char ext[4]; - wsprintf(ext, "S%02d", + wsprintf(ext, np2flagext, (LOWORD(wParam) - IDM_FLAGSAVE) % 100); flagsave(ext); } if ((LOWORD(wParam) >= IDM_FLAGLOAD) && (LOWORD(wParam) < IDM_FLAGLOAD + STATSAVEMAX)) { char ext[4]; - wsprintf(ext, "S%02d", + wsprintf(ext, np2flagext, (LOWORD(wParam) - IDM_FLAGLOAD) % 100); flagload(ext, "Status Load", TRUE); } @@ -882,12 +957,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT np2oscfg.winy = rc.top; sysmng_update(SYS_UPDATEOSCFG); } - if (GetWindowLong(hWnd, GWL_STYLE) & WS_MINIMIZE) { - toolwin_close(); - } - else if (np2oscfg.toolwin) { - toolwin_open(); - } } break; @@ -903,24 +972,26 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_ENTERSIZEMOVE: - soundmng_stop(); + soundmng_disable(SNDPROC_MAIN); mouse_running(MOUSE_STOP); - winloc_movingstart(); - toolwin_movingstart(); - break; - - case WM_EXITSIZEMOVE: - toolwin_movingend(); - mouse_running(MOUSE_CONT); - soundmng_play(); + winlocex_destroy(wlex); + wlex = np2_winlocexallwin(hWnd); break; case WM_MOVING: if (np2oscfg.WINSNAP) { - winloc_movingproc((RECT *)lParam); + winlocex_moving(wlex, (RECT *)lParam); } break; + case WM_EXITSIZEMOVE: + winlocex_move(wlex); + winlocex_destroy(wlex); + wlex = NULL; + mouse_running(MOUSE_CONT); + soundmng_enable(SNDPROC_MAIN); + break; + case WM_KEYDOWN: if (wParam == VK_F11) { scrnmng_enablemenubar(); @@ -932,7 +1003,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT sysmng_update(SYS_UPDATECFG); } else { - winkeydown106(wParam, lParam); + winkbd_keydown(wParam, lParam); } break; @@ -941,7 +1012,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT return(DefWindowProc(hWnd, WM_SYSKEYUP, VK_F10, lParam)); } if ((wParam != VK_F12) || (np2oscfg.F12COPY)) { - winkeyup106(wParam, lParam); + winkbd_keyup(wParam, lParam); } break; @@ -956,11 +1027,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; } } - winkeydown106(wParam, lParam); + winkbd_keydown(wParam, lParam); break; case WM_SYSKEYUP: - winkeyup106(wParam, lParam); + winkbd_keyup(wParam, lParam); break; case WM_MOUSEMOVE: @@ -1141,6 +1212,7 @@ int WINAPI WinMain(HINSTANCE hInstance, np2arg_analize(lpszCmdLine); initload(); toolwin_readini(); + keydisp_readini(); rand_setseed((unsigned)time(NULL)); @@ -1174,6 +1246,7 @@ int WINAPI WinMain(HINSTANCE hInstance, } keystat_reset(); + np2class_initialize(hInstance); if (!hPreInst) { np2.style = CS_BYTEALIGNCLIENT | CS_HREDRAW | CS_VREDRAW; np2.lpfnWndProc = WndProc; @@ -1188,12 +1261,12 @@ int WINAPI WinMain(HINSTANCE hInstance, if (!RegisterClass(&np2)) { return(FALSE); } - toolwin_initapp(hInstance); } + toolwin_initapp(hInstance); keydisp_initialize(hPreInst); viewer_init(hPreInst); // ver0.30 - hWndMain = CreateWindowEx(0, szClassName, np2oscfg.titles, + hWndMain = CreateWindow(szClassName, np2oscfg.titles, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, np2oscfg.winx, np2oscfg.winy, 640, 400, @@ -1252,15 +1325,12 @@ int WINAPI WinMain(HINSTANCE hInstance, EnableMenuItem(GetMenu(hWndMain), IDM_HELP, MF_GRAYED); } - xmenu_settoolwin(np2oscfg.toolwin); - xmenu_setwinsnap(np2oscfg.WINSNAP); - xmenu_setbackground(np2oscfg.background); - xmenu_setbgsound(np2oscfg.background); - xmenu_setscrnmul(8); // ver0.26 - - if (np2oscfg.toolwin) { - toolwin_open(); - } + sysmenu_settoolwin(np2oscfg.toolwin); + sysmenu_setkeydisp(np2oscfg.keydisp); + sysmenu_setwinsnap(np2oscfg.WINSNAP); + sysmenu_setbackground(np2oscfg.background); + sysmenu_setbgsound(np2oscfg.background); + sysmenu_setscrnmul(8); // ver0.26 scrnmode = 0; if (np2arg.fullscreen) { @@ -1303,7 +1373,6 @@ int WINAPI WinMain(HINSTANCE hInstance, pccore_init(); S98_init(); - sstpmsg_welcome(); #ifdef OPENING_WAIT @@ -1314,13 +1383,22 @@ int WINAPI WinMain(HINSTANCE hInstance, pccore_reset(); + if (!(scrnmode & SCRNMODE_FULLSCREEN)) { + if (np2oscfg.toolwin) { + toolwin_create(); + } + if (np2oscfg.keydisp) { + keydisp_create(); + } + } + np2opening = 0; // れじうむ if (np2oscfg.resume) { int id; - id = flagload(np2resume, "Resume", FALSE); + id = flagload(np2resumeext, "Resume", FALSE); if (id == IDYES) { for (i=0; i<4; i++) np2arg.disk[i] = NULL; } @@ -1353,8 +1431,9 @@ int WINAPI WinMain(HINSTANCE hInstance, if (!GetMessage(&msg, NULL, 0, 0)) { break; } - if ((msg.message != WM_SYSKEYDOWN) && - (msg.message != WM_SYSKEYUP)) { + if ((msg.hwnd != hWndMain) || + ((msg.message != WM_SYSKEYDOWN) && + (msg.message != WM_SYSKEYUP))) { TranslateMessage(&msg); } DispatchMessage(&msg); @@ -1434,7 +1513,7 @@ int WINAPI WinMain(HINSTANCE hInstance, DispatchMessage(&msg); } } - toolwin_close(); + toolwin_destroy(); pccore_cfgupdate(); @@ -1442,10 +1521,10 @@ int WINAPI WinMain(HINSTANCE hInstance, S98_trash(); if (np2oscfg.resume) { - flagsave(np2resume); + flagsave(np2resumeext); } else { - flagdelete(np2resume); + flagdelete(np2resumeext); } #ifdef USE_ROMEO @@ -1465,6 +1544,7 @@ int WINAPI WinMain(HINSTANCE hInstance, if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) { initsave(); toolwin_writeini(); + keydisp_writeini(); } TRACETERM();