LRESULT Client::HandleEvent(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_SOCKET: sPlayerMain.OnSocketEvent(wParam, WSAGETSELECTERROR(lParam), WSAGETSELECTEVENT(lParam)); return 0; case WM_CREATE: LoadContent(); return 0; case WM_KEYDOWN: KeyDown(wParam); return 0; case WM_PAINT: Draw(hwnd); return 0; case WM_LBUTTONDBLCLK: MouseLDButtonDown(lParam); return 0; case WM_MBUTTONDOWN: MouseMButtonDown(lParam); return 0; case WM_LBUTTONDOWN: MouseLButtonDown(lParam); return 0; case WM_RBUTTONDOWN: MouseRButtonDown(lParam); return 0; case WM_MOUSEMOVE: MouseMove(lParam); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, msg, wParam, lParam); }
int MainFrameGetMsg(void) { SDL_Event event; if(!s_done && SDL_WaitEvent(&event)) { switch (event.type) { case SDL_MOUSEMOTION: MouseMove(event.button.x, event.button.y); break; case SDL_MOUSEBUTTONDOWN: MouseLButtonDown(event.button.x, event.button.y); break; case SDL_MOUSEBUTTONUP: MouseLButtonUp(event.button.x, event.button.y); break; case SDL_KEYDOWN: KeyboardChar(event.key.keysym.sym); break; case SDL_QUIT: s_done = 1; break; default: break; } } else { return 1; } return 0; }
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; switch(message) { case WM_COMMAND: { int wmId = LOWORD(wParam); /* int wmEvent = HIWORD(wParam); */ switch (wmId) { default: return DefWindowProc(hWnd, message, wParam, lParam); } } break; case WM_CREATE: s_hAppWnd = hWnd; SetWindowPos(hWnd, NULL, 0, 0, -1, -1, SWP_NOSIZE); s_hCanvas = CanvasInit(hWnd); MouseInit(); KeyboardInit(); break; case WM_DESTROY: KeyboardRelease(); MouseRelease(); CanvasRelease(); PostQuitMessage(0); break; case WM_PAINT: { PAINTSTRUCT ps; hdc = BeginPaint(hWnd, &ps); BitBlt(hdc, ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right - ps.rcPaint.left, ps.rcPaint.bottom - ps.rcPaint.top, s_hCanvas, ps.rcPaint.left, ps.rcPaint.top, SRCCOPY); EndPaint(hWnd, &ps); } break; case WM_KEYDOWN: { switch(wParam) { case VK_CONTROL: break; case VK_ESCAPE: break; } } break; case WM_CHAR: { int Key = (UINT)wParam; MiscTrace("WM_CHAR: %d\n", Key); KeyboardChar(Key); } break; case WM_MOUSEMOVE: { POINT point; point.x = LOWORD(lParam); point.y = HIWORD(lParam); //MiscTrace("WM_MOUSEMOVE: %d, %d\n", point.x, point.y); MouseMove(point.x, point.y); } break; case WM_LBUTTONDOWN: { POINT point; point.x = LOWORD(lParam); point.y = HIWORD(lParam); MiscTrace("WM_LBUTTONDOWN: %d, %d\n", point.x, point.y); MouseLButtonDown(point.x, point.y); } break; case WM_LBUTTONUP: { POINT point; point.x = LOWORD(lParam); point.y = HIWORD(lParam); MiscTrace("WM_LBUTTONUP: %d, %d\n", point.x, point.y); MouseLButtonUp(point.x, point.y); } break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }