// // 함수: WndProc(HWND, UINT, WPARAM, LPARAM) // // 목적: 주 창의 메시지를 처리합니다. // // WM_COMMAND - 응용 프로그램 메뉴를 처리합니다. // WM_PAINT - 주 창을 그립니다. // WM_DESTROY - 종료 메시지를 게시하고 반환합니다. // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static int retval; switch (message) { case WM_CREATE: break; case WM_SIZE: case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_MOUSEMOVE: case WM_MOUSEWHEEL: case WM_KEYDOWN: case WM_KEYUP: gGameFramework.OnProcessingWindowMessage(hWnd, message, wParam, lParam); break; //case WM_TIMER: // break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
// // 함수: WndProc(HWND, UINT, WPARAM, LPARAM) // // 목적: 주 창의 메시지를 처리합니다. // // WM_COMMAND - 응용 프로그램 메뉴를 처리합니다. // WM_PAINT - 주 창을 그립니다. // WM_DESTROY - 종료 메시지를 게시하고 반환합니다. // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONUP: case WM_MOUSEMOVE: case WM_LBUTTONDBLCLK: case WM_MOUSELEAVE: case WM_MBUTTONDOWN: gGameFramework.OnProcessingMouseMessage(hWnd, message, wParam, lParam); break; case WM_KEYDOWN: case WM_KEYUP: case WM_CHAR: case WM_IME_COMPOSITION: case WM_IME_STARTCOMPOSITION: gGameFramework.OnProcessingKeyboardMessage(hWnd, message, wParam, lParam); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); gGameFramework.PresentFrameBuffer(hdc); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: if (!gGameFramework.OnProcessingWindowMessage(hWnd, message, wParam, lParam)) return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }