⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 control.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}void wxControl::MacAdjustControlRect(){    wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;    if ( m_width == -1 || m_height == -1 )    {        Rect    bestsize = { 0 , 0 , 0 , 0 } ;        short   baselineoffset ;        ::GetBestControlRect( (ControlHandle) m_macControl , &bestsize , &baselineoffset ) ;        if ( EmptyRect( &bestsize ) )        {            baselineoffset = 0;            bestsize.left = bestsize.top = 0 ;            bestsize.right = 16 ;            bestsize.bottom = 16 ;            if ( IsKindOf( CLASSINFO( wxScrollBar ) ) )            {                bestsize.bottom = 16 ;            }            else if ( IsKindOf( CLASSINFO( wxSpinButton ) ) )            {                bestsize.bottom = 24 ;            }        }        if ( m_width == -1 )        {            if ( IsKindOf( CLASSINFO( wxButton ) ) )            {                m_width = m_label.length() * 8 + 12 ;                if ( m_width < 70 )                  m_width = 70 ;            }            else if ( IsKindOf( CLASSINFO( wxStaticText ) ) )            {                m_width = m_label.length() * 8 ;            }            else                m_width = bestsize.right - bestsize.left ;            m_width += 2 * m_macHorizontalBorder + MacGetLeftBorderSize() + MacGetRightBorderSize() ;        }        if ( m_height == -1 )        {            m_height = bestsize.bottom - bestsize.top ;            if ( m_height < 10 )                m_height = 13 ;            m_height += 2 * m_macVerticalBorder + MacGetTopBorderSize() + MacGetBottomBorderSize() ;        }        MacUpdateDimensions() ;    }}WXWidget wxControl::MacGetContainerForEmbedding(){    if ( m_macControl )        return m_macControl ;    return wxWindow::MacGetContainerForEmbedding() ;}void wxControl::MacUpdateDimensions(){    // actually in the current systems this should never be possible, but later reparenting    // may become a reality    if ( (ControlHandle) m_macControl == NULL )        return ;    if ( GetParent() == NULL )        return ;    WindowRef rootwindow = (WindowRef) MacGetRootWindow() ;    if ( rootwindow == NULL )        return ;    Rect oldBounds ;    GetControlBounds( (ControlHandle) m_macControl , &oldBounds ) ;    int new_x = m_x + MacGetLeftBorderSize() + m_macHorizontalBorder ;    int new_y = m_y + MacGetTopBorderSize() + m_macVerticalBorder ;    int new_width = m_width - MacGetLeftBorderSize() - MacGetRightBorderSize() - 2 * m_macHorizontalBorder ;    int new_height = m_height - MacGetTopBorderSize() - MacGetBottomBorderSize() - 2 * m_macVerticalBorder ;    GetParent()->MacWindowToRootWindow( & new_x , & new_y ) ;    bool doMove = new_x != oldBounds.left || new_y != oldBounds.top ;    bool doResize =  ( oldBounds.right - oldBounds.left ) != new_width || (oldBounds.bottom - oldBounds.top ) != new_height ;    if ( doMove || doResize )    {        InvalWindowRect( rootwindow, &oldBounds ) ;        if ( doMove )        {            UMAMoveControl( (ControlHandle) m_macControl , new_x , new_y ) ;        }        if ( doResize )        {            UMASizeControl( (ControlHandle) m_macControl , new_width , new_height ) ;        }    }}void wxControl::MacSuperChangedPosition(){     MacUpdateDimensions() ;    wxWindow::MacSuperChangedPosition() ;}void wxControl::MacSuperEnabled( bool enabled ){    Refresh(false) ;    wxWindow::MacSuperEnabled( enabled ) ;}void wxControl::MacSuperShown( bool show ){    if ( (ControlHandle) m_macControl )    {        if ( !show )        {            if ( m_macControlIsShown )            {                ::UMAHideControl( (ControlHandle) m_macControl ) ;                m_macControlIsShown = false ;            }        }        else        {            if ( MacIsReallyShown() && !m_macControlIsShown )            {                ::UMAShowControl( (ControlHandle) m_macControl ) ;                m_macControlIsShown = true ;            }        }    }    wxWindow::MacSuperShown( show ) ;}void  wxControl::DoSetSize(int x, int y,            int width, int height,            int sizeFlags ){    wxWindow::DoSetSize( x , y ,width , height ,sizeFlags ) ;#if 0    {        Rect meta , control ;        GetControlBounds( (ControlHandle) m_macControl , &control ) ;        RgnHandle rgn = NewRgn() ;        GetControlRegion( (ControlHandle) m_macControl , kControlStructureMetaPart , rgn ) ;        GetRegionBounds( rgn , &meta ) ;        if ( !EmptyRect( &meta ) )        {            wxASSERT( meta.left >= control.left - m_macHorizontalBorder ) ;            wxASSERT( meta.right <= control.right + m_macHorizontalBorder ) ;            wxASSERT( meta.top >= control.top - m_macVerticalBorder ) ;            wxASSERT( meta.bottom <= control.bottom + m_macVerticalBorder ) ;        }        DisposeRgn( rgn ) ;    }#endif    return ;}bool  wxControl::Show(bool show){    if ( !wxWindow::Show( show ) )        return false ;    if ( (ControlHandle) m_macControl )    {        if ( !show )        {            if ( m_macControlIsShown )            {                ::UMAHideControl( (ControlHandle) m_macControl ) ;                m_macControlIsShown = false ;            }        }        else        {            if ( MacIsReallyShown() && !m_macControlIsShown )            {                ::UMAShowControl( (ControlHandle) m_macControl ) ;                m_macControlIsShown = true ;            }        }    }    return true ;}bool  wxControl::Enable(bool enable){    if ( !wxWindow::Enable(enable) )        return false;    if ( (ControlHandle) m_macControl )    {        if ( enable )            UMAActivateControl( (ControlHandle) m_macControl ) ;        else            UMADeactivateControl( (ControlHandle) m_macControl ) ;    }    return true ;}void wxControl::Refresh(bool eraseBack, const wxRect *rect){    wxWindow::Refresh( eraseBack , rect ) ;}void wxControl::MacRedrawControl(){    if ( (ControlHandle) m_macControl && MacGetRootWindow() && m_macControlIsShown )    {        wxClientDC dc(this) ;        wxMacPortSetter helper(&dc) ;        wxMacWindowClipper clipper(this) ;        wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ;        UMADrawControl( (ControlHandle) m_macControl ) ;    }}void wxControl::OnPaint(wxPaintEvent& event){    if ( (ControlHandle) m_macControl )    {        wxPaintDC dc(this) ;        wxMacPortSetter helper(&dc) ;        wxMacWindowClipper clipper(this) ;        wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ;        UMADrawControl( (ControlHandle) m_macControl ) ;    }    else    {      event.Skip() ;    }}void wxControl::OnEraseBackground(wxEraseEvent& event){    wxWindow::OnEraseBackground( event ) ;}void  wxControl::OnKeyDown( wxKeyEvent &event ){    if ( (ControlHandle) m_macControl == NULL )        return ;#if TARGET_CARBON    char charCode ;    UInt32 keyCode ;    UInt32 modifiers ;    GetEventParameter( (EventRef) wxTheApp->MacGetCurrentEvent(), kEventParamKeyMacCharCodes, typeChar, NULL,sizeof(char), NULL,&charCode );    GetEventParameter( (EventRef) wxTheApp->MacGetCurrentEvent(), kEventParamKeyCode, typeUInt32, NULL,  sizeof(UInt32), NULL, &keyCode );       GetEventParameter((EventRef) wxTheApp->MacGetCurrentEvent(), kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers);    ::HandleControlKey( (ControlHandle) m_macControl , keyCode , charCode , modifiers ) ;#else    EventRecord *ev = (EventRecord*) wxTheApp->MacGetCurrentEvent() ;    short keycode ;    short keychar ;    keychar = short(ev->message & charCodeMask);    keycode = short(ev->message & keyCodeMask) >> 8 ;    ::HandleControlKey( (ControlHandle) m_macControl , keycode , keychar , ev->modifiers ) ;#endif}void  wxControl::OnMouseEvent( wxMouseEvent &event ){    if ( (ControlHandle) m_macControl == NULL )    {        event.Skip() ;        return ;    }    if (event.GetEventType() == wxEVT_LEFT_DOWN || event.GetEventType() == wxEVT_LEFT_DCLICK )    {        int x = event.m_x ;        int y = event.m_y ;        MacClientToRootWindow( &x , &y ) ;        ControlHandle   control ;        Point       localwhere ;        SInt16      controlpart ;        localwhere.h = x ;        localwhere.v = y ;        short modifiers = 0;        if ( !event.m_leftDown && !event.m_rightDown )            modifiers  |= btnState ;        if ( event.m_shiftDown )            modifiers |= shiftKey ;        if ( event.m_controlDown )            modifiers |= controlKey ;        if ( event.m_altDown )            modifiers |= optionKey ;        if ( event.m_metaDown )            modifiers |= cmdKey ;        {            control = (ControlHandle) m_macControl ;            if ( control && ::IsControlActive( control ) )            {                {                    controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ;                    wxTheApp->s_lastMouseDown = 0 ;                    if ( control && controlpart != kControlNoPart )                    {                        MacHandleControlClick( (WXWidget) control , controlpart , false /* mouse not down anymore */ ) ;                    }                }            }        }    }    else    {        event.Skip() ;    }}bool wxControl::MacCanFocus() const{    if ( (ControlHandle) m_macControl == NULL )        return true ;    else        return false ;}void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED( mouseStillDown ) ){    wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;}void wxControl::DoSetWindowVariant( wxWindowVariant variant ){    if ( m_macControl == NULL )    {        wxWindow::SetWindowVariant( variant ) ;        return ;    }    m_windowVariant = variant ;    ControlSize size ;    ControlFontStyleRec fontStyle;    fontStyle.flags = kControlUseFontMask  ;    // we will get that from the settings later    // and make this NORMAL later, but first    // we have a few calculations that we must fix    if ( variant == wxWINDOW_VARIANT_NORMAL )    {        if ( IsKindOf( CLASSINFO( wxScrollBar ) ) )            variant  = wxWINDOW_VARIANT_NORMAL ;        else            variant = wxWINDOW_VARIANT_SMALL ;    }    switch ( variant )    {        case wxWINDOW_VARIANT_NORMAL :            size = kControlSizeNormal;            fontStyle.font = kControlFontBigSystemFont;            break ;        case wxWINDOW_VARIANT_SMALL :            size = kControlSizeSmall;            fontStyle.font = kControlFontSmallSystemFont;            break ;        case wxWINDOW_VARIANT_MINI :           if (UMAGetSystemVersion() >= 0x1030 )            {                size = 3 ; // not always defined in the header                fontStyle.font = -5 ; // not always defined in the header            }            else            {                size = kControlSizeSmall;                fontStyle.font = kControlFontSmallSystemFont;            }            break;            break ;        case wxWINDOW_VARIANT_LARGE :            size = kControlSizeLarge;            fontStyle.font = kControlFontBigSystemFont;            break ;        default:            wxFAIL_MSG(_T("unexpected window variant"));            break ;    }    ::SetControlData( (ControlHandle) m_macControl , kControlEntireControl, kControlSizeTag, sizeof( ControlSize ), &size );    ::SetControlFontStyle( (ControlHandle) m_macControl , &fontStyle );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -