--- np2/win9x/np2.cpp 2003/10/26 08:59:53 1.11 +++ np2/win9x/np2.cpp 2003/10/28 18:21:05 1.14 @@ -24,6 +24,7 @@ #include "sstp.h" #include "sstpmsg.h" #include "dclock.h" +#include "toolwin.h" #ifdef USE_ROMEO #include "juliet.h" #endif @@ -69,7 +70,7 @@ 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]; @@ -90,28 +91,6 @@ 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 BYTE scrnmode; static void changescreen(BYTE newmode) { @@ -252,6 +231,8 @@ 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); @@ -289,13 +270,16 @@ 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: + toolwin_open(); + break; + + case IDM_SCREENCENTER: if ((!scrnmng_isfullscreen()) && (!(GetWindowLong(hWnd, GWL_STYLE) & (WS_MAXIMIZE | WS_MINIMIZE)))) { @@ -404,6 +388,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 +399,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case IDM_FDD2EJECT: diskdrv_setfdd(1, NULL, 0); + toolwin_setfdd(1, NULL); break; case IDM_SASI1OPEN: @@ -834,34 +820,31 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case WM_PAINT: hdc = BeginPaint(hWnd, &ps); if (np2opening) { - - HDC hmdc; - HBITMAP hbmp; - BITMAP bmp; - HINSTANCE hinst; - int sx = 640 + np2oscfg.paddingx; - int sy = 400 + np2oscfg.paddingy; - - hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); -#if 1 - hbmp = LoadBitmap(hinst, "NP2BMP"); - GetObject(hbmp, sizeof(BITMAP), &bmp); - hmdc = CreateCompatibleDC(hdc); - SelectObject(hmdc, hbmp); - BitBlt(hdc, (sx - 252) / 2, (sy - 28) / 2, - bmp.bmWidth, bmp.bmHeight, hmdc, 0, 0, SRCCOPY); - DeleteDC(hmdc); - DeleteObject(hbmp); -#else - hbmp = LoadBitmap(hinst, "NP2EXT"); - GetObject(hbmp, sizeof(BITMAP), &bmp); - hmdc = CreateCompatibleDC(hdc); - SelectObject(hmdc, hbmp); - BitBlt(hdc, (sx - 160) / 2, (sy - 140) / 2, + HINSTANCE hinst; + RECT rect; + int width; + int height; + HBITMAP hbmp; + BITMAP bmp; + HDC hmdc; + HBRUSH hbrush; + 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); + 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, bmp.bmWidth, bmp.bmHeight, hmdc, 0, 0, SRCCOPY); - DeleteDC(hmdc); - DeleteObject(hbmp); -#endif + DeleteDC(hmdc); + DeleteObject(hbmp); } else { // scrnmng_update(); @@ -875,6 +858,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_MOVE: + toolwin_movingend(); if ((!scrnmng_isfullscreen()) && (!(GetWindowLong(hWndMain, GWL_STYLE) & (WS_MAXIMIZE | WS_MINIMIZE)))) { @@ -900,6 +884,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT soundmng_stop(); mouse_running(MOUSE_STOP); winloc_movingstart(); + toolwin_movingstart(); break; case WM_EXITSIZEMOVE: @@ -915,6 +900,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case WM_KEYDOWN: if (wParam == VK_F11) { + scrnmng_enablemenubar(); return(DefWindowProc(hWnd, WM_SYSKEYDOWN, VK_F10, lParam)); } if ((wParam == VK_F12) && (!np2oscfg.F12COPY)) { @@ -926,6 +912,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT winkeydown106(wParam, lParam); } break; + case WM_KEYUP: if (wParam == VK_F11) { return(DefWindowProc(hWnd, WM_SYSKEYUP, VK_F10, lParam)); @@ -953,10 +940,19 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT winkeyup106(wParam, lParam); break; + case WM_MOUSEMOVE: + if (scrnmng_isfullscreen()) { + POINT p; + if (GetCursorPos(&p)) { + scrnmng_fullscrnmenu(p.y); + } + } + break; + case WM_LBUTTONDOWN: if (!mouse_btn(MOUSE_LEFTDOWN)) { if (scrnmng_isfullscreen()) { - POINT p; + POINT p; if ((GetCursorPos(&p)) && (p.y >= 466)) { np2oscfg.clk_x++; sysmng_update(SYS_UPDATEOSCFG); @@ -966,6 +962,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; + case WM_LBUTTONUP: if (!mouse_btn(MOUSE_LEFTUP)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); @@ -1119,6 +1116,7 @@ int WINAPI WinMain(HINSTANCE hInstance, file_setcd(modulefile); np2arg_analize(lpszCmdLine); initload(); + toolwin_readini(); rand_setseed((unsigned)time(NULL)); @@ -1160,12 +1158,13 @@ int WINAPI WinMain(HINSTANCE hInstance, np2.hInstance = hInstance; np2.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); np2.hCursor = LoadCursor(NULL, IDC_ARROW); - np2.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); + np2.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH); np2.lpszMenuName = MAKEINTRESOURCE(IDM_MAIN); np2.lpszClassName = szClassName; if (!RegisterClass(&np2)) { return(FALSE); } + toolwin_initapp(hInstance); } keydisp_initialize(hPreInst); viewer_init(hPreInst); // ver0.30 @@ -1221,24 +1220,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 @@ -1423,6 +1405,7 @@ int WINAPI WinMain(HINSTANCE hInstance, DispatchMessage(&msg); } } + toolwin_close(); pccore_cfgupdate(); @@ -1452,6 +1435,7 @@ int WINAPI WinMain(HINSTANCE hInstance, if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) { initsave(); + toolwin_writeini(); } TRACETERM();