osxuitoolkit.cpp
来自「这是VCF框架的代码」· C++ 代码 · 共 2,694 行 · 第 1/5 页
CPP
2,694 行
switch ( type ) { case kEventClassMouse : { EventMouseButton button = kEventMouseButtonPrimary; GetEventParameter( msg->osxEvent_, kEventParamMouseButton, typeMouseButton, NULL, sizeof (EventMouseButton), NULL, &button); UInt32 keyboardModifier = 0; GetEventParameter( msg->osxEvent_, kEventParamKeyModifiers, typeUInt32, NULL, sizeof (keyboardModifier), NULL, &keyboardModifier); ::Point mousePos; GetEventParameter( msg->osxEvent_, kEventParamMouseLocation, typeQDPoint, NULL, sizeof (mousePos), NULL, &mousePos); UInt32 clickCount = 0; GetEventParameter( msg->osxEvent_, kEventParamClickCount, typeUInt32, NULL, sizeof (clickCount), NULL, &clickCount); VCF::Point pt( mousePos.h , mousePos.v ); switch ( whatHappened ) { case kEventMouseDown : { Scrollable* scrollable = msg->control_->getScrollable(); if ( NULL != scrollable ) { pt.x_ += scrollable->getHorizontalPosition(); pt.y_ += scrollable->getVerticalPosition(); } result = new VCF::MouseEvent( msg->control_, Control::MOUSE_DOWN, OSXUIUtils::translateButtonMask( button ), OSXUIUtils::translateKeyMask( keyboardModifier ), &pt ); } break; case kEventMouseUp : { Scrollable* scrollable = msg->control_->getScrollable(); if ( NULL != scrollable ) { pt.x_ += scrollable->getHorizontalPosition(); pt.y_ += scrollable->getVerticalPosition(); } result = new VCF::MouseEvent( msg->control_, Control::MOUSE_UP, OSXUIUtils::translateButtonMask( button ), OSXUIUtils::translateKeyMask( keyboardModifier ), &pt ); } break; case kEventMouseMoved : { Scrollable* scrollable = msg->control_->getScrollable(); if ( NULL != scrollable ) { pt.x_ += scrollable->getHorizontalPosition(); pt.y_ += scrollable->getVerticalPosition(); } result = new VCF::MouseEvent ( msg->control_, Control::MOUSE_MOVE, OSXUIUtils::translateButtonMask( button ), OSXUIUtils::translateKeyMask( keyboardModifier ), &pt ); } break; case kEventMouseDragged : { Scrollable* scrollable = msg->control_->getScrollable(); if ( NULL != scrollable ) { pt.x_ += scrollable->getHorizontalPosition(); pt.y_ += scrollable->getVerticalPosition(); } result = new VCF::MouseEvent ( msg->control_, Control::MOUSE_MOVE, OSXUIUtils::translateButtonMask( button ), OSXUIUtils::translateKeyMask( keyboardModifier ), &pt ); } break; case kEventMouseEntered : { Scrollable* scrollable = msg->control_->getScrollable(); if ( NULL != scrollable ) { pt.x_ += scrollable->getHorizontalPosition(); pt.y_ += scrollable->getVerticalPosition(); } result = new VCF::MouseEvent( msg->control_, Control::MOUSE_ENTERED, OSXUIUtils::translateButtonMask( 0 ), OSXUIUtils::translateKeyMask( 0 ), &pt ); } break; case kEventMouseExited : { Scrollable* scrollable = msg->control_->getScrollable(); if ( NULL != scrollable ) { pt.x_ += scrollable->getHorizontalPosition(); pt.y_ += scrollable->getVerticalPosition(); } result = new VCF::MouseEvent( msg->control_, Control::MOUSE_LEAVE, OSXUIUtils::translateButtonMask( 0 ), OSXUIUtils::translateKeyMask( 0 ), &pt ); } break; case kEventMouseWheelMoved : { } break; } } break; case kEventClassKeyboard : { switch ( whatHappened ) { case kEventRawKeyDown : { char c = 0; UInt32 keyCode = 0; UInt32 keyMods = 0; UInt32 kbType = 0; GetEventParameter( msg->osxEvent_, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof (char), NULL, &c); GetEventParameter( msg->osxEvent_, kEventParamKeyCode, typeUInt32, NULL, sizeof (keyCode), NULL, &keyCode); GetEventParameter( msg->osxEvent_, kEventParamKeyModifiers, typeUInt32, NULL, sizeof (keyMods), NULL, &keyMods); GetEventParameter( msg->osxEvent_, kEventParamKeyboardType, typeUInt32, NULL, sizeof (kbType), NULL, &kbType); VirtualKeyCode virtKeyValue = translateOSXKeyToVirtKeyCode( c, keyCode, keyMods ); unsigned long keyMask = 0; if ( keyMods & cmdKey ) { keyMask |= kmAlt; } if ( keyMods & shiftKey ) { keyMask |= kmShift; } if ( keyMods & controlKey ) { keyMask |= kmCtrl; } result = new VCF::KeyboardEvent( msg->control_, Control::KEYBOARD_DOWN, 1, keyMask, c, virtKeyValue ); UIToolkit::handleKeyboardEvent( (KeyboardEvent*)result ); if ( result->isConsumed() ) { //result->free(); //result = NULL; } StringUtils::traceWithArgs( Format("keyMask: %d, virtKeyValue: %d\n") % keyMask% virtKeyValue ); } break; case kEventRawKeyRepeat : { } break; case kEventRawKeyUp : { char c = 0; UInt32 keyCode = 0; UInt32 keyMods = 0; UInt32 kbType = 0; GetEventParameter( msg->osxEvent_, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof (char), NULL, &c); GetEventParameter( msg->osxEvent_, kEventParamKeyCode, typeUInt32, NULL, sizeof (keyCode), NULL, &keyCode); GetEventParameter( msg->osxEvent_, kEventParamKeyModifiers, typeUInt32, NULL, sizeof (keyMods), NULL, &keyMods); GetEventParameter( msg->osxEvent_, kEventParamKeyboardType, typeUInt32, NULL, sizeof (kbType), NULL, &kbType); VirtualKeyCode virtKeyValue = translateOSXKeyToVirtKeyCode( c, keyCode, keyMods ); unsigned long keyMask = 0; if ( keyMods & cmdKey ) { keyMask |= kmAlt; } if ( keyMods & shiftKey ) { keyMask |= kmShift; } if ( keyMods & controlKey ) { keyMask |= kmCtrl; } result = new VCF::KeyboardEvent( msg->control_, Control::KEYBOARD_UP, 1, keyMask, c, virtKeyValue ); } break; case kEventRawKeyModifiersChanged : { } break; case kEventHotKeyPressed : { } break; case kEventHotKeyReleased : { } break; } } break; case kEventClassTextInput : { switch ( whatHappened ) { } } break; case kEventClassApplication : { switch ( whatHappened ) { case kEventAppActivated : { } break; case kEventAppDeactivated : { } break; case kEventAppQuit : { } break; case kEventAppLaunchNotification : { } break; case kEventAppLaunched : { } break; case kEventAppTerminated : { } break; case kEventAppFrontSwitched : { } break; case kEventAppFocusMenuBar : { } break; case kEventAppFocusNextDocumentWindow : { } break; case kEventAppFocusNextFloatingWindow : { } break; case kEventAppFocusToolbar : { } break; case kEventAppGetDockTileMenu : { } break; case kEventAppHidden : { } break; case kEventAppShown : { } break; case kEventAppSystemUIModeChanged : { } break; } } break; case kEventClassAppleEvent : { } break; case kEventClassMenu : { switch ( whatHappened ) { case kEventMenuBeginTracking : { } break; case kEventMenuEndTracking : { } break; case kEventMenuChangeTrackingMode : { } break; case kEventMenuOpening : { } break; case kEventMenuClosed : { } break; case kEventMenuTargetItem : { } break; case kEventMenuMatchKey : { } break; case kEventMenuEnableItems : { } break; case kEventMenuPopulate : { } break; case kEventMenuMeasureItemWidth : { } break; case kEventMenuMeasureItemHeight : { } break; case kEventMenuDrawItem : { } break; case kEventMenuDrawItemContent : { } break; case kEventMenuDispose : { } break; } } break; case kEventClassWindow : { switch ( whatHappened ) { case kEventWindowFocusAcquired : { result = new VCF::FocusEvent ( msg->control_, Control::FOCUS_GAINED ); } break; case kEventWindowFocusRelinquish : { result = new VCF::FocusEvent ( msg->control_, Control::FOCUS_LOST ); } break; case kEventWindowCollapse : { } break; case kEventWindowCollapseAll : { } break; case kEventWindowExpand : { } break; case kEventWindowExpandAll : { } break; case kEventWindowClose : { result = new VCF::ComponentEvent( msg->control_, Component::COMPONENT_DESTROYED ); } break; case kEventWindowCloseAll : { } break; case kEventWindowZoom : { } break; case kEventWindowZoomAll : { } break; case kEventWindowContextualMenuSelect : { } break; case kEventWindowPathSelect : { } break; case kEventWindowGetIdealSize : { } break; case kEventWindowGetMinimumSize : { } break; case kEventWindowGetMaximumSize : { } break; case kEventWindowBoundsChanged: { UInt32 attributes = 0; OSStatus err = GetEventParameter( msg->osxEvent_, kEventParamAttributes, typeUInt32, NULL, sizeof( UInt32 ), NULL, &attributes ); if ( err == noErr ) { ::Rect currentBounds; GetEventParameter( msg->osxEvent_, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(currentBounds), NULL, ¤tBounds); if ( attributes & kWindowBoundsChangeSizeChanged ) { VCF::Size sz( abs(currentBounds.right - currentBounds.left), abs(currentBounds.bottom - currentBounds.top) ); result = new ControlEvent( msg->control_, sz ); } else if ( attributes & kWindowBoundsChangeOriginChanged ) { VCF::Point pt( currentBounds.left , currentBounds.top ); result = new VCF::ControlEvent( msg->control_, pt ); } } } break; case kEventWindowConstrain : { } break; case kEventWindowHandleContentClick : { } break; case kEventWindowGetDockTileMenu : { } break; case kEventWindowProxyBeginDrag : { } break; case kEventWindowProxyEndDrag : { } break; case kEventWindowToolbarSwitchMode : { } break; } } break; case kEventClassControl : { switch ( whatHappened ) { case kEventControlInitialize : { result = new VCF::ComponentEvent( msg->control_, Component::COMPONENT_CREATED ); } break;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?