WINEXPORT LRESULT CALLBACK ClrPickProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { switch( msg ) { case WM_CREATE: initRGBValues(); // our subclass slows things down - force a paint before we subclass UpdateWindow( hwnd ); // SubclassGenericAdd( hwnd, (WNDPROC)MakeWndProcInstance( HotkeyProc, InstanceHandle ) ); return( 0 ); case WM_PAINT: paintBlocks( hwnd ); return( 0 ); case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: return( gotoNewBlock( hwnd, msg, wparam, lparam ) ); case WM_LBUTTONUP: return( selectedNewColour( hwnd, NC_FORE, wparam ) ); case WM_RBUTTONUP: return( selectedNewColour( hwnd, NC_BACK, wparam ) ); case WM_MOUSEMOVE: return( processMouseMove( hwnd, msg, wparam, lparam ) ); case WM_DESTROY: // SubclassGenericRemove( hwnd ); return( 0 ); } return( DefWindowProc( hwnd, msg, wparam, lparam ) ); }
bool CustomFrameResize::onMouseMove() { if (!m_bResizeEnabled) return false; if (m_iResizeDir != -1) processResize(); else processMouseMove(); return true; }
WINEXPORT LRESULT CALLBACK StaticSubclassProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { switch( msg ) { case WM_NCHITTEST: return( HTCLIENT ); case WM_MOUSEMOVE: return( processMouseMove( hwnd, msg, wparam, lparam ) ); case WM_LBUTTONDOWN: return( processLButtonDown( hwnd ) ); case WM_LBUTTONUP: return( processLButtonUp( hwnd, lparam ) ); } return( CallWindowProc( SubclassGenericFindOldProc( hwnd ), hwnd, msg, wparam, lparam ) ); }
WINEXPORT LRESULT CALLBACK FtPickProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { switch( msg ) { case WM_CREATE: return( 0 ); case WM_PAINT: return( drawCurLogfont( hwnd, msg, wparam, lparam ) ); case WM_LBUTTONDOWN: return( setupForDrop( hwnd ) ); case WM_LBUTTONUP: return( doDrop( hwnd, wparam ) ); case WM_MOUSEMOVE: return( processMouseMove( hwnd, msg, wparam, lparam ) ); case WM_DESTROY: return( 0 ); } return( DefWindowProc( hwnd, msg, wparam, lparam ) ); }
UIEventResult UICanvas::pushEvent(const Event& event) { Event processedEvent = event; UIEventResult eventUsage; // -- Raw event delivery system m_surfaceContainerLock++; for(std::vector<UIWindow*>::reverse_iterator it = m_surfaces.rbegin(); it != m_surfaces.rend(); it++) { if((*it)->getChildCount() > 0) { // deliver the event (*it)->dispatchEvent(processedEvent); if((*it)->isModal()) { eventUsage.clickPassedThrough = false; break; } } } m_surfaceContainerLock--; // -- Built-in event handling switch(event.type) { case Event::MouseMoved: { processMouseMove(processedEvent.mouseMove.x, processedEvent.mouseMove.y); } break; case Event::TouchMoved: { processTouchMove(processedEvent.touch.x, processedEvent.touch.y); } break; case Event::MouseButtonPressed: { bool result = processMouseButtonPressed(processedEvent.mouseButton.x, processedEvent.mouseButton.y, processedEvent.mouseButton.button); eventUsage.hitControls = false; } break; case Event::TouchPressed: { bool result = processMouseButtonPressed(processedEvent.touch.x, processedEvent.touch.y, Mouse::Left); eventUsage.hitControls = false; } break; case Event::MouseButtonReleased: { processMouseButtonReleased(processedEvent.mouseButton.x, processedEvent.mouseButton.y, processedEvent.mouseButton.button, eventUsage); } break; case Event::TouchReleased: { processMouseButtonReleased(processedEvent.touch.x, processedEvent.touch.y, Mouse::Left, eventUsage); } break; case Event::TextEntered: { // Deliver input to the focused control if(m_state.m_focusControl) { UxKeyEvent keyEvent; keyEvent.type = UxKeyEvent::KeyPress; keyEvent.unicode = processedEvent.text.unicode; if (keyEvent.unicode >= 32) m_state.m_focusControl->keyPressEvent(&keyEvent); //m_state.m_focusControl->onTextEvent(processedEvent.text.unicode); } } break; case Event::KeyPressed: { // Deliver input to the focused control if (m_state.m_focusControl) { UxKeyEvent keyEvent; keyEvent.type = UxKeyEvent::KeyPress; keyEvent.key = processedEvent.key.code; m_state.m_focusControl->keyPressEvent(&keyEvent); } }break; } // now that surfaces were processed, apply changes to surfaces container // the updates in the container are only considered in the next event, so it is not wrongly consumed applyPendingChanges(); return eventUsage; };