--- np2/win9x/np2.cpp 2003/10/26 11:51:46 1.12 +++ np2/win9x/np2.cpp 2003/10/31 04:11:40 1.20 @@ -24,9 +24,11 @@ #include "sstp.h" #include "sstpmsg.h" #include "dclock.h" +#include "toolwin.h" #ifdef USE_ROMEO #include "juliet.h" #endif +#include "np2class.h" #include "dialog.h" #include "memory.h" #include "pccore.h" @@ -69,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}; // ver0.38 + 0, 1, 0, 9801, 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; @@ -85,34 +86,26 @@ static BYTE np2stopemulate = 0; static int np2opening = 1; static int np2quitmsg = 0; HMENU hStat = NULL; +static BYTE scrnmode; + WINLOC wl; static const char np2help[] = "np2.hlp"; static const char np2resume[] = "sav"; -typedef struct { -const char *str; - int id; -} SYSMENU_ITEM; -static SYSMENU_ITEM smenu_item[] = { - {"&Centering", IDM_SCREENCENTER}, - {"&Window Snap", IDM_SNAPENABLE}, - {"&Background", IDM_BACKGROUND}, - {"Background &Sound", IDM_BGSOUND}, - {"&Key display", IDM_KEYDISP}, - {NULL, 0}, - {" 320x200", IDM_SCRNMUL4}, - {" 480x300", IDM_SCRNMUL6}, - {" 640x400", IDM_SCRNMUL8}, - {" 800x500", IDM_SCRNMUL10}, - {" 960x600", IDM_SCRNMUL12}, - {"1280x800", IDM_SCRNMUL16}, - {NULL, 0}, - }; +static void winuienter(void) { -static BYTE scrnmode; + soundmng_disable(SNDPROC_MAIN); + scrnmng_topwinui(); +} + +static void winuileave(void) { + + scrnmng_clearwinui(); + soundmng_enable(SNDPROC_MAIN); +} static void changescreen(BYTE newmode) { @@ -128,6 +121,12 @@ static void changescreen(BYTE newmode) { renewal |= (change & SCRNMODE_ROTATEMASK); } if (renewal) { + if (renewal & SCRNMODE_FULLSCREEN) { + toolwin_close(); + } + else if (renewal & SCRNMODE_ROTATEMASK) { + toolwin_movingstart(); + } soundmng_stop(); mouse_running(MOUSE_STOP); keydisp_destroy(); @@ -142,6 +141,13 @@ static void changescreen(BYTE newmode) { } } scrndraw_redraw(); + if ((renewal & SCRNMODE_FULLSCREEN) && + (!scrnmng_isfullscreen()) && (np2oscfg.toolwin)) { + toolwin_open(); + } + else if (renewal & SCRNMODE_ROTATEMASK) { + toolwin_movingend(); + } mouse_running(MOUSE_CONT); soundmng_play(); } @@ -175,7 +181,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) { @@ -185,15 +191,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); } } @@ -236,8 +242,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)) { @@ -252,29 +257,18 @@ static int flagload(const char *ext, con } if (id == IDYES) { statsave_load(path); + toolwin_setfdd(0, fdd_diskname(0)); + toolwin_setfdd(1, fdd_diskname(1)); } 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; @@ -289,33 +283,45 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT #ifndef __GNUC__ WINNLSEnableIME(hWnd, FALSE); #endif -// DragAcceptFiles(hWnd, TRUE); break; case WM_SYSCOMMAND: update = 0; switch(wParam) { - case IDM_SCREENCENTER: // ver0.26 + case IDM_TOOLWIN: + xmenu_settoolwin(np2oscfg.toolwin ^ 1); + if (np2oscfg.toolwin) { + toolwin_open(); + } + else { + toolwin_close(); + } + update |= SYS_UPDATEOSCFG; + break; + + case IDM_SCREENCENTER: if ((!scrnmng_isfullscreen()) && (!(GetWindowLong(hWnd, GWL_STYLE) & (WS_MAXIMIZE | WS_MINIMIZE)))) { + toolwin_movingstart(); wincentering(hWnd); + toolwin_movingend(); } break; case IDM_SNAPENABLE: xmenu_setwinsnap(np2oscfg.WINSNAP ^ 1); - update |= SYS_UPDATECFG; + update |= SYS_UPDATEOSCFG; break; case IDM_BACKGROUND: xmenu_setbackground(np2oscfg.background ^ 1); - update |= SYS_UPDATECFG; + update |= SYS_UPDATEOSCFG; break; case IDM_BGSOUND: xmenu_setbgsound(np2oscfg.background ^ 2); - update |= SYS_UPDATECFG; + update |= SYS_UPDATEOSCFG; break; case IDM_KEYDISP: @@ -404,6 +410,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case IDM_FDD1EJECT: diskdrv_setfdd(0, NULL, 0); + toolwin_setfdd(0, NULL); break; case IDM_FDD2OPEN: @@ -414,6 +421,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case IDM_FDD2EJECT: diskdrv_setfdd(1, NULL, 0); + toolwin_setfdd(1, NULL); break; case IDM_SASI1OPEN: @@ -545,19 +553,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; @@ -834,31 +854,31 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case WM_PAINT: hdc = BeginPaint(hWnd, &ps); if (np2opening) { - HINSTANCE hinst; + HINSTANCE hinst; RECT rect; int width; int height; - HBITMAP hbmp; - BITMAP bmp; - HDC hmdc; + HBITMAP hbmp; + BITMAP bmp; + HDC hmdc; HBRUSH hbrush; - hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); + hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); GetClientRect(hWnd, &rect); width = rect.right - rect.left; height = rect.bottom - rect.top; - hbmp = LoadBitmap(hinst, "NP2BMP"); - GetObject(hbmp, sizeof(BITMAP), &bmp); + hbmp = LoadBitmap(hinst, "NP2BMP"); + GetObject(hbmp, sizeof(BITMAP), &bmp); hbrush = (HBRUSH)SelectObject(hdc, GetStockObject(BLACK_BRUSH)); PatBlt(hdc, 0, 0, width, height, PATCOPY); SelectObject(hdc, hbrush); - hmdc = CreateCompatibleDC(hdc); - SelectObject(hmdc, hbmp); - BitBlt(hdc, (width - bmp.bmWidth) / 2, - (height - bmp.bmHeight) / 2, + hmdc = CreateCompatibleDC(hdc); + SelectObject(hmdc, hbmp); + BitBlt(hdc, (width - bmp.bmWidth) / 2, + (height - bmp.bmHeight) / 2, bmp.bmWidth, bmp.bmHeight, hmdc, 0, 0, SRCCOPY); - DeleteDC(hmdc); - DeleteObject(hbmp); + DeleteDC(hmdc); + DeleteObject(hbmp); } else { // scrnmng_update(); @@ -872,13 +892,20 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_MOVE: - if ((!scrnmng_isfullscreen()) && - (!(GetWindowLong(hWndMain, GWL_STYLE) & - (WS_MAXIMIZE | WS_MINIMIZE)))) { - GetWindowRect(hWnd, &rc); - np2oscfg.winx = rc.left; - np2oscfg.winy = rc.top; - sysmng_update(SYS_UPDATEOSCFG); + if (!scrnmng_isfullscreen()) { + if (!(GetWindowLong(hWnd, GWL_STYLE) & + (WS_MAXIMIZE | WS_MINIMIZE))) { + GetWindowRect(hWnd, &rc); + np2oscfg.winx = rc.left; + np2oscfg.winy = rc.top; + sysmng_update(SYS_UPDATEOSCFG); + } + if (GetWindowLong(hWnd, GWL_STYLE) & WS_MINIMIZE) { + toolwin_close(); + } + else if (np2oscfg.toolwin) { + toolwin_open(); + } } break; @@ -894,19 +921,21 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_ENTERSIZEMOVE: - soundmng_stop(); + soundmng_disable(SNDPROC_MAIN); mouse_running(MOUSE_STOP); - winloc_movingstart(); + winloc_movingstart(&wl); + toolwin_movingstart(); break; case WM_EXITSIZEMOVE: + toolwin_movingend(); mouse_running(MOUSE_CONT); - soundmng_play(); + soundmng_enable(SNDPROC_MAIN); break; case WM_MOVING: if (np2oscfg.WINSNAP) { - winloc_movingproc((RECT *)lParam); + winloc_movingproc(&wl, (RECT *)lParam); } break; @@ -921,7 +950,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT sysmng_update(SYS_UPDATECFG); } else { - winkeydown106(wParam, lParam); + winkbd_keydown(wParam, lParam); } break; @@ -930,7 +959,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; @@ -945,11 +974,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: @@ -1098,7 +1127,8 @@ static void processwait(UINT cnt) { timing_setcount(0); framecnt = 0; scrnmng_dispclock(); - keydisp_draw(np2oscfg.DRAW_SKIP); + keydisp_draw((BYTE)cnt); + toolwin_draw((BYTE)cnt); viewer_allreload(FALSE); if (np2oscfg.DISPCLK & 3) { if (sysmng_workclockrenewal()) { @@ -1128,6 +1158,7 @@ int WINAPI WinMain(HINSTANCE hInstance, file_setcd(modulefile); np2arg_analize(lpszCmdLine); initload(); + toolwin_readini(); rand_setseed((unsigned)time(NULL)); @@ -1161,6 +1192,7 @@ int WINAPI WinMain(HINSTANCE hInstance, } keystat_reset(); + np2class_initialize(hInstance); if (!hPreInst) { np2.style = CS_BYTEALIGNCLIENT | CS_HREDRAW | CS_VREDRAW; np2.lpfnWndProc = WndProc; @@ -1176,10 +1208,11 @@ int WINAPI WinMain(HINSTANCE hInstance, return(FALSE); } } + 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, @@ -1230,24 +1263,7 @@ int WINAPI WinMain(HINSTANCE hInstance, } InsertMenu(hMenu, 1, MF_BYPOSITION | MF_POPUP, (UINT)hStat, "S&tat"); } - - hMenu = GetSystemMenu(hWndMain, FALSE); // ver0.26 - for (i=0; i<(sizeof(smenu_item)/sizeof(SYSMENU_ITEM)); i++) { - if (smenu_item[i].str) { - InsertMenu(hMenu, i, MF_BYPOSITION | MF_STRING, - smenu_item[i].id, smenu_item[i].str); - } - else { - InsertMenu(hMenu, i, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); - } - } - - if (np2oscfg.I286SAVE) { - InsertMenu(hMenu, 5, MF_BYPOSITION | MF_STRING, IDM_MEMORYDUMP, - "&Memory Dump"); - InsertMenu(hMenu, 6, MF_BYPOSITION | MF_STRING, IDM_DEBUGUTY, - "&Debug Utility"); - } + sysmenu_init(); DrawMenuBar(hWndMain); // ver0.30 @@ -1255,11 +1271,16 @@ 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(); + } + scrnmode = 0; if (np2arg.fullscreen) { scrnmode |= SCRNMODE_FULLSCREEN; @@ -1432,6 +1453,7 @@ int WINAPI WinMain(HINSTANCE hInstance, DispatchMessage(&msg); } } + toolwin_close(); pccore_cfgupdate(); @@ -1461,6 +1483,7 @@ int WINAPI WinMain(HINSTANCE hInstance, if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) { initsave(); + toolwin_writeini(); } TRACETERM();