void EventLoop::processSystemEvents() { sf::Event ev; EventPtr evtWrapper; while (m_system.m_appWindow.GetEvent(ev)) { switch (ev.Type) { case sf::Event::Closed: handleEvent(CloseEvent(ev)); break; case sf::Event::MouseButtonPressed: handleEvent(MouseDownEvent(ev)); break; case sf::Event::MouseButtonReleased: handleEvent(MouseUpEvent(ev)); break; case sf::Event::MouseWheelMoved: handleEvent(MouseWheelEvent(ev)); break; case sf::Event::KeyPressed: handleEvent(KeyDownEvent(ev)); break; case sf::Event::KeyReleased: handleEvent(KeyUpEvent(ev)); break; } } }
int HandleWsEvent(_THIS, const TWsEvent& aWsEvent) { switch (aWsEvent.Type()) { case EEventSwitchOff: SDL_PrivateQuit(); return 0; case EEventPointerBufferReady: return PointerBufferReadyEvent(_this/*, aWsEvent.Time()*/); case EEventPointer: /* Mouse pointer events */ return PointerEvent(_this, aWsEvent); case EEventKeyDown: /* Key events */ return KeyDownEvent(_this, aWsEvent); case EEventKeyUp: /* Key events */ return KeyUpEvent(_this, aWsEvent); case EEventFocusGained: /* SDL window got focus */ return FocusGainedEvent(_this); case EEventFocusLost: /* SDL window lost focus */ return FocusLostEvent(_this); case EEventModifiersChanged: return ModifiersChangedEvent(aWsEvent); case EEventScreenDeviceChanged: return ScreenDeviceChanged(); case ESDLWsEvent: return InternalEvent(aWsEvent); default: return 0; } }
//-------------------------------------------------------------------------------------- // Called every time the application receives a message //-------------------------------------------------------------------------------------- LRESULT CALLBACK CScene::WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { PAINTSTRUCT ps; HDC hdc; if( TwEventWin( hWnd, message, wParam, lParam ) ) // send event message to AntTweakBar return 0; // event has been handled by AntTweakBar switch( message ) { case WM_PAINT: hdc = BeginPaint( hWnd, &ps ); EndPaint( hWnd, &ps ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; // These windows messages (WM_KEYXXXX) can be used to get keyboard input to the window // This application has added some simple functions (not DirectX) to process these messages (all in Input.cpp/h) case WM_KEYDOWN: KeyDownEvent( static_cast<EKeyState>(wParam) ); break; case WM_KEYUP: KeyUpEvent( static_cast<EKeyState>(wParam) ); break; // catch window resize case WM_SIZE: RECT rc; GetClientRect( hWnd, &rc ); mViewportWidth = rc.right - rc.left; mViewportHeight = rc.bottom - rc.top; // pass to camera CCamera::SetViewport( mViewportWidth, mViewportHeight ); break; default: return DefWindowProc( hWnd, message, wParam, lParam ); } return 0; }