--- np2/win9x/np2.cpp 2003/11/04 15:44:59 1.24 +++ np2/win9x/np2.cpp 2003/11/15 07:10:03 1.30 @@ -151,6 +151,7 @@ static void changescreen(BYTE newmode) { } else if (renewal & SCRNMODE_ROTATEMASK) { wlex = np2_winlocexallwin(hWndMain); + winlocex_setholdwnd(wlex, hWndMain); } soundmng_stop(); mousemng_disable(MOUSEPROC_WINUI); @@ -300,6 +301,25 @@ static int flagload(const char *ext, con // ---- proc +static void np2popup(HWND hWnd, LPARAM lp) { + + HMENU mainmenu; + HMENU hMenu; + POINT pt; + + mainmenu = (HMENU)GetWindowLong(hWnd, NP2GWL_HMENU); + if (mainmenu == NULL) { + return; + } + hMenu = CreatePopupMenu(); + menu_addmenubar(hMenu, mainmenu); + pt.x = LOWORD(lp); + pt.y = HIWORD(lp); + ClientToScreen(hWnd, &pt); + TrackPopupMenu(hMenu, TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL); + DestroyMenu(hMenu); +} + LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; @@ -583,61 +603,67 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case IDM_KEY: xmenu_setkey(0); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_JOY1: xmenu_setkey(1); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_JOY2: xmenu_setkey(2); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_XSHIFT: xmenu_setxshift(np2cfg.XSHIFT ^ 1); keystat_forcerelease(0x70); + update |= SYS_UPDATECFG; break; case IDM_XCTRL: xmenu_setxshift(np2cfg.XSHIFT ^ 2); keystat_forcerelease(0x74); + update |= SYS_UPDATECFG; break; case IDM_XGRPH: xmenu_setxshift(np2cfg.XSHIFT ^ 4); keystat_forcerelease(0x73); + update |= SYS_UPDATECFG; break; case IDM_F12MOUSE: xmenu_setf12copy(0); winkbd_resetf12(); - update |= SYS_UPDATECFG; + update |= SYS_UPDATEOSCFG; break; case IDM_F12COPY: xmenu_setf12copy(1); winkbd_resetf12(); - update |= SYS_UPDATECFG; + update |= SYS_UPDATEOSCFG; break; case IDM_F12STOP: xmenu_setf12copy(2); winkbd_resetf12(); - update |= SYS_UPDATECFG; + update |= SYS_UPDATEOSCFG; break; case IDM_F12EQU: xmenu_setf12copy(3); winkbd_resetf12(); - update |= SYS_UPDATECFG; + update |= SYS_UPDATEOSCFG; break; case IDM_F12COMMA: xmenu_setf12copy(4); winkbd_resetf12(); - update |= SYS_UPDATECFG; + update |= SYS_UPDATEOSCFG; break; case IDM_BEEPOFF: @@ -665,66 +691,38 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case IDM_NOSOUND: - xmenu_setsound(0); + xmenu_setsound(0x00); update |= SYS_UPDATECFG; break; case IDM_PC9801_14: - xmenu_setsound(1); + xmenu_setsound(0x01); update |= SYS_UPDATECFG; break; case IDM_PC9801_26K: - { - BYTE sw; - sw = np2cfg.SOUND_SW; - if (sw & 4) { - sw &= 6; - sw ^= 2; - } - else { - sw = 2; - } - xmenu_setsound(sw); - update |= SYS_UPDATECFG; - } + xmenu_setsound(0x02); + update |= SYS_UPDATECFG; break; case IDM_PC9801_86: - { - BYTE sw; - sw = np2cfg.SOUND_SW; - if (sw & 2) { - sw &= 6; - sw ^= 4; - } - else if (!(sw & 4)) { - sw = 4; - } - xmenu_setsound(sw); - update |= SYS_UPDATECFG; - } + xmenu_setsound(0x04); + update |= SYS_UPDATECFG; break; - case IDM_PC9801_118: - xmenu_setsound(8); + case IDM_PC9801_26_86: + xmenu_setsound(0x06); update |= SYS_UPDATECFG; break; - case IDM_CHIBIOTO: - { - BYTE sw; - sw = np2cfg.SOUND_SW; - if (sw & 4) { - sw &= 0x14; - sw ^= 0x10; - } - else { - sw = 0x14; - } - xmenu_setsound(sw); - update |= SYS_UPDATECFG; - } + case IDM_PC9801_86_CB: + xmenu_setsound(0x14); + update |= SYS_UPDATECFG; + break; + + case IDM_PC9801_118: + xmenu_setsound(0x08); + update |= SYS_UPDATECFG; break; case IDM_SPEAKBOARD: @@ -1085,8 +1083,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case WM_RBUTTONDOWN: if (!mousemng_buttonevent(MOUSEMNG_RIGHTDOWN)) { - if (scrnmng_isfullscreen()) { - POINT p; + if (!scrnmng_isfullscreen()) { + np2popup(hWnd, lParam); + } + else { + POINT p; if ((GetCursorPos(&p)) && (p.y >= 466) && (np2oscfg.clk_x)) { np2oscfg.clk_fnt++; @@ -1111,6 +1112,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT np2oscfg.wintype = 0; } wlex = np2_winlocexallwin(hWnd); + winlocex_setholdwnd(wlex, hWnd); np2class_windowtype(hWnd, np2oscfg.wintype); winlocex_move(wlex); winlocex_destroy(wlex); @@ -1203,20 +1205,25 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT } +static void framereset(UINT cnt) { + + framecnt = 0; + scrnmng_dispclock(); + keydisp_draw((BYTE)cnt); + toolwin_draw((BYTE)cnt); + viewer_allreload(FALSE); + if (np2oscfg.DISPCLK & 3) { + if (sysmng_workclockrenewal()) { + sysmng_updatecaption(3); + } + } +} + static void processwait(UINT cnt) { if (timing_getcount() >= cnt) { timing_setcount(0); - framecnt = 0; - scrnmng_dispclock(); - keydisp_draw((BYTE)cnt); - toolwin_draw((BYTE)cnt); - viewer_allreload(FALSE); - if (np2oscfg.DISPCLK & 3) { - if (sysmng_workclockrenewal()) { - sysmng_updatecaption(3); - } - } + framereset(cnt); } else { Sleep(1); @@ -1235,6 +1242,8 @@ int WINAPI WinMain(HINSTANCE hInstance, UINT32 tick; #endif + _MEM_INIT(); + GetModuleFileName(NULL, modulefile, sizeof(modulefile)); dosio_init(); file_setcd(modulefile); @@ -1395,6 +1404,8 @@ int WINAPI WinMain(HINSTANCE hInstance, if (np2oscfg.MOUSE_SW) { // ver0.30 mousemng_enable(MOUSEPROC_SYSTEM); } +// mousemng_enable(MOUSEPROC_WINUI); +// mousemng_enable(MOUSEPROC_BG); commng_initialize(); sysmng_initialize(); @@ -1524,7 +1535,7 @@ int WINAPI WinMain(HINSTANCE hInstance, else { timing_setcount(cnt - framecnt); } - processwait(0); + framereset(0); } } else { @@ -1578,6 +1589,7 @@ int WINAPI WinMain(HINSTANCE hInstance, } TRACETERM(); + _MEM_USED("report.txt"); dosio_term(); viewer_term(); // ver0.30