static void winuienter(void) { soundmng_disable(SNDPROC_MAIN); scrnmng_topwinui(); }
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; RECT rc; HDC hdc; UINT update; switch (msg) { case WM_CREATE: #ifndef __GNUC__ WINNLSEnableIME(hWnd, FALSE); #endif break; case WM_SYSCOMMAND: update = 0; switch(wParam) { case IDM_MEMORYDUMP: debugsub_memorydump(); break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } sysmng_update(update); break; case WM_COMMAND: np2cmd(hWnd, LOWORD(wParam)); break; case WM_ACTIVATE: if (LOWORD(wParam) != WA_INACTIVE) { scrnmng_update(); keystat_allrelease(); mousemng_enable(MOUSEPROC_BG); } else { mousemng_disable(MOUSEPROC_BG); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); if (np2opening) { HINSTANCE hinst; RECT rect; int width; int height; HBITMAP hbmp; BITMAP bmp; HDC hmdc; HBRUSH hbrush; #if defined(_WIN64) hinst = reinterpret_cast<HINSTANCE>(::GetWindowLongPtr(hWnd, GWLP_HINSTANCE)); #else hinst = reinterpret_cast<HINSTANCE>(::GetWindowLong(hWnd, GWL_HINSTANCE)); #endif GetClientRect(hWnd, &rect); width = rect.right - rect.left; height = rect.bottom - rect.top; hbmp = LoadBitmap(hinst, _T("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); } else { // scrnmng_update(); scrndraw_redraw(); } EndPaint(hWnd, &ps); break; case WM_QUERYNEWPALETTE: scrnmng_querypalette(); break; case WM_MOVE: if ((!scrnmng_isfullscreen()) && (!(GetWindowLong(hWnd, GWL_STYLE) & (WS_MAXIMIZE | WS_MINIMIZE)))) { GetWindowRect(hWnd, &rc); np2oscfg.winx = rc.left; np2oscfg.winy = rc.top; sysmng_update(SYS_UPDATEOSCFG); } break; case WM_SIZE: if (wParam == SIZE_RESTORED) { scrnmng_restoresize(); } break; case WM_ENTERMENULOOP: winuienter(); if (scrnmng_isfullscreen()) { DrawMenuBar(hWnd); } break; case WM_EXITMENULOOP: winuileave(); break; case WM_ENTERSIZEMOVE: soundmng_disable(SNDPROC_MAIN); mousemng_disable(MOUSEPROC_WINUI); break; case WM_EXITSIZEMOVE: mousemng_enable(MOUSEPROC_WINUI); soundmng_enable(SNDPROC_MAIN); break; case WM_KEYDOWN: if (wParam == VK_F11) { return(DefWindowProc(hWnd, WM_SYSKEYDOWN, VK_F10, lParam)); } if ((wParam == VK_F12) && (!np2oscfg.F12COPY)) { mousemng_toggle(MOUSEPROC_SYSTEM); xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); } else { winkbd_keydown(wParam, lParam); } break; case WM_KEYUP: if (wParam == VK_F11) { return(DefWindowProc(hWnd, WM_SYSKEYUP, VK_F10, lParam)); } if ((wParam != VK_F12) || (np2oscfg.F12COPY)) { winkbd_keyup(wParam, lParam); } break; case WM_SYSKEYDOWN: winkbd_keydown(wParam, lParam); break; case WM_SYSKEYUP: winkbd_keyup(wParam, lParam); break; case WM_LBUTTONDOWN: if (!mousemng_buttonevent(MOUSEMNG_LEFTDOWN)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; case WM_LBUTTONUP: if (!mousemng_buttonevent(MOUSEMNG_LEFTUP)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; case WM_MBUTTONDOWN: // ver0.26 mousemng_toggle(MOUSEPROC_SYSTEM); xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); break; case WM_RBUTTONDOWN: if (!mousemng_buttonevent(MOUSEMNG_RIGHTDOWN)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; case WM_RBUTTONUP: if (!mousemng_buttonevent(MOUSEMNG_RIGHTUP)) { return(DefWindowProc(hWnd, msg, wParam, lParam)); } break; case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_NP2CMD: switch(LOWORD(lParam)) { case NP2CMD_EXIT: np2quitmsg = 1; PostQuitMessage(0); break; case NP2CMD_EXIT2: np2quitmsg = 2; PostQuitMessage(0); break; case NP2CMD_RESET: pccore_cfgupdate(); pccore_reset(); break; } break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return(0L); }
static LRESULT CALLBACK mdproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { switch(msg) { case WM_CREATE: np2class_wmcreate(hWnd); winloc_setclientsize(hWnd, mdbgwin.width, mdbgwin.height); np2class_windowtype(hWnd, (mdbgcfg.type & 1) + 1); break; case WM_PAINT: mdpaintmsg(hWnd); break; case WM_KEYDOWN: case WM_KEYUP: SendMessage(hWndMain, msg, wp, lp); break; case WM_ENTERMENULOOP: soundmng_disable(SNDPROC_SUBWIND); break; case WM_EXITMENULOOP: soundmng_enable(SNDPROC_SUBWIND); break; case WM_ENTERSIZEMOVE: soundmng_disable(SNDPROC_SUBWIND); winlocex_destroy(mdbgwin.wlex); mdbgwin.wlex = np2_winlocexallwin(hWnd); break; case WM_MOVING: winlocex_moving(mdbgwin.wlex, (RECT *)lp); break; case WM_EXITSIZEMOVE: winlocex_destroy(mdbgwin.wlex); mdbgwin.wlex = NULL; soundmng_enable(SNDPROC_SUBWIND); break; case WM_MOVE: if (!(GetWindowLong(hWnd, GWL_STYLE) & (WS_MAXIMIZE | WS_MINIMIZE))) { RECT rc; GetWindowRect(hWnd, &rc); mdbgcfg.posx = rc.left; mdbgcfg.posy = rc.top; sysmng_update(SYS_UPDATEOSCFG); } break; case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: np2class_wmdestroy(hWnd); dd2_release(mdbgwin.dd2hdl); mdbgwin.hwnd = NULL; break; default: return(DefWindowProc(hWnd, msg, wp, lp)); } return(0); }
static LRESULT CALLBACK skproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { switch(msg) { case WM_CREATE: np2class_wmcreate(hWnd); winloc_setclientsize(hWnd, skbdwin.width, skbdwin.height); np2class_windowtype(hWnd, (skbdcfg.type & 1) + 1); break; case WM_PAINT: skpaintmsg(hWnd); break; case WM_LBUTTONDOWN: if ((softkbd_down(LOWORD(lp), HIWORD(lp))) && (skbdcfg.type & 1)) { return(SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0L)); } break; case WM_LBUTTONDBLCLK: if (softkbd_down(LOWORD(lp), HIWORD(lp))) { skbdcfg.type ^= 1; wintypechange(hWnd, (skbdcfg.type & 1) + 1); sysmng_update(SYS_UPDATEOSCFG); } break; case WM_LBUTTONUP: softkbd_up(); break; case WM_KEYDOWN: case WM_KEYUP: SendMessage(hWndMain, msg, wp, lp); break; case WM_ENTERMENULOOP: soundmng_disable(SNDPROC_SUBWIND); break; case WM_EXITMENULOOP: soundmng_enable(SNDPROC_SUBWIND); break; case WM_ENTERSIZEMOVE: soundmng_disable(SNDPROC_SUBWIND); winlocex_destroy(skbdwin.wlex); skbdwin.wlex = np2_winlocexallwin(hWnd); break; case WM_MOVING: winlocex_moving(skbdwin.wlex, (RECT *)lp); break; case WM_EXITSIZEMOVE: winlocex_destroy(skbdwin.wlex); skbdwin.wlex = NULL; soundmng_enable(SNDPROC_SUBWIND); break; case WM_MOVE: if (!(GetWindowLong(hWnd, GWL_STYLE) & (WS_MAXIMIZE | WS_MINIMIZE))) { RECT rc; GetWindowRect(hWnd, &rc); skbdcfg.posx = rc.left; skbdcfg.posy = rc.top; sysmng_update(SYS_UPDATEOSCFG); } break; case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: np2class_wmdestroy(hWnd); dd2_release(skbdwin.dd2hdl); skbdwin.hwnd = NULL; break; default: return(DefWindowProc(hWnd, msg, wp, lp)); } return(0L); }
static LRESULT CALLBACK kdproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { switch(msg) { case WM_CREATE: np2class_wmcreate(hWnd); np2class_windowtype(hWnd, (kdispcfg.type & 1) << 1); break; case WM_COMMAND: switch(LOWORD(wp)) { case IDM_KDISPFM: kdispcfg.mode = KDISPCFG_FM; sysmng_update(SYS_UPDATEOSCFG); kdsetdispmode(KEYDISP_MODEFM); break; case IDM_KDISPMIDI: kdispcfg.mode = KDISPCFG_MIDI; sysmng_update(SYS_UPDATEOSCFG); kdsetdispmode(KEYDISP_MODEMIDI); break; case IDM_KDCLOSE: return(SendMessage(hWnd, WM_CLOSE, 0, 0)); } break; case WM_PAINT: kdpaintmsg(hWnd); break; #if 0 case WM_ACTIVATE: if (LOWORD(wp) != WA_INACTIVE) { keydisps_reload(); kddrawkeys(hWnd, TRUE); } break; #endif case WM_LBUTTONDOWN: if (kdispcfg.type & 1) { return(SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0L)); } break; case WM_RBUTTONDOWN: kdopenpopup(hWnd, lp); break; case WM_LBUTTONDBLCLK: kdispcfg.type ^= 1; wintypechange(hWnd, (kdispcfg.type & 1) << 1); sysmng_update(SYS_UPDATEOSCFG); break; case WM_KEYDOWN: case WM_KEYUP: SendMessage(hWndMain, msg, wp, lp); break; case WM_ENTERMENULOOP: soundmng_disable(SNDPROC_SUBWIND); break; case WM_EXITMENULOOP: soundmng_enable(SNDPROC_SUBWIND); break; case WM_ENTERSIZEMOVE: soundmng_disable(SNDPROC_SUBWIND); winlocex_destroy(kdispwin.wlex); kdispwin.wlex = np2_winlocexallwin(hWnd); break; case WM_MOVING: winlocex_moving(kdispwin.wlex, (RECT *)lp); break; case WM_EXITSIZEMOVE: winlocex_destroy(kdispwin.wlex); kdispwin.wlex = NULL; soundmng_enable(SNDPROC_SUBWIND); break; case WM_MOVE: if (!(GetWindowLong(hWnd, GWL_STYLE) & (WS_MAXIMIZE | WS_MINIMIZE))) { RECT rc; GetWindowRect(hWnd, &rc); kdispcfg.posx = rc.left; kdispcfg.posy = rc.top; sysmng_update(SYS_UPDATEOSCFG); } break; case WM_CLOSE: sysmenu_setkeydisp(0); sysmng_update(SYS_UPDATEOSCFG); DestroyWindow(hWnd); break; case WM_DESTROY: np2class_wmdestroy(hWnd); dd2_release(kdispwin.dd2hdl); kdispwin.hwnd = NULL; kdsetdispmode(KEYDISP_MODENONE); break; default: return(DefWindowProc(hWnd, msg, wp, lp)); } return(0L); }