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, &currentBounds);						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 + -
显示快捷键?