void np2class_windowtype(HWND hWnd, UINT8 type) { RECT rect; DWORD style; GetClientRect(hWnd, &rect); style = GetWindowLong(hWnd, GWL_STYLE); switch(type) { case 0: default: style |= WS_CAPTION; np2class_enablemenu(hWnd, TRUE); break; case 1: style |= WS_CAPTION; np2class_enablemenu(hWnd, FALSE); break; case 2: style &= ~WS_CAPTION; np2class_enablemenu(hWnd, FALSE); break; } SetWindowLong(hWnd, GWL_STYLE, style); SetWindowPos(hWnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_DRAWFRAME | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER); winloc_setclientsize(hWnd, rect.right - rect.left, rect.bottom - rect.top); }
static void kdsetwinsize(void) { int width; int height; WINLOCEX wlex; wlex = np2_winlocexallwin(hWndMain); winlocex_setholdwnd(wlex, kdispwin.hwnd); keydisp_getsize(&width, &height); winloc_setclientsize(kdispwin.hwnd, width, height); winlocex_move(wlex); winlocex_destroy(wlex); }
void np2class_frametype(HWND hWnd, UINT8 thick) { RECT rect; DWORD style; GetClientRect(hWnd, &rect); style = GetWindowLong(hWnd, GWL_STYLE); if (thick) { style |= WS_THICKFRAME; } else { style &= ~WS_THICKFRAME; } SetWindowLong(hWnd, GWL_STYLE, style); SetWindowPos(hWnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_DRAWFRAME | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER); winloc_setclientsize(hWnd, rect.right - rect.left, rect.bottom - rect.top); }
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 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); }