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

📄 utils.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
void wxMacControl::SetValue( SInt32 v ){    ::SetControl32BitValue( m_controlRef , v );}void wxMacControl::SetMinimum( SInt32 v ){    ::SetControl32BitMinimum( m_controlRef , v );}void wxMacControl::SetMaximum( SInt32 v ){    ::SetControl32BitMaximum( m_controlRef , v );}void wxMacControl::SetValueAndRange( SInt32 value , SInt32 minimum , SInt32 maximum ){    ::SetControl32BitMinimum( m_controlRef , minimum );    ::SetControl32BitMaximum( m_controlRef , maximum );    ::SetControl32BitValue( m_controlRef , value );}OSStatus wxMacControl::SetFocus( ControlFocusPart focusPart ){    return SetKeyboardFocus( GetControlOwner( m_controlRef ), m_controlRef, focusPart );}bool wxMacControl::HasFocus() const{    ControlRef control;    GetKeyboardFocus( GetUserFocusWindow() , &control );    return control == m_controlRef;}void wxMacControl::SetNeedsFocusRect( bool needs ){    m_needsFocusRect = needs;}bool wxMacControl::NeedsFocusRect() const{    return m_needsFocusRect;}void wxMacControl::VisibilityChanged(bool shown){}void wxMacControl::SuperChangedPosition(){}void wxMacControl::SetFont( const wxFont & font , const wxColour& foreground , long windowStyle ){    m_font = font;    ControlFontStyleRec fontStyle;    if ( font.MacGetThemeFontID() != kThemeCurrentPortFont )    {        switch ( font.MacGetThemeFontID() )        {            case kThemeSmallSystemFont :                fontStyle.font = kControlFontSmallSystemFont;                break;            case 109 : // mini font                fontStyle.font = -5;                break;            case kThemeSystemFont :                fontStyle.font = kControlFontBigSystemFont;                break;            default :                fontStyle.font = kControlFontBigSystemFont;                break;        }        fontStyle.flags = kControlUseFontMask;    }    else    {        fontStyle.font = font.MacGetFontNum();        fontStyle.style = font.MacGetFontStyle();        fontStyle.size = font.MacGetFontSize();        fontStyle.flags = kControlUseFontMask | kControlUseFaceMask | kControlUseSizeMask;    }    fontStyle.just = teJustLeft;    fontStyle.flags |= kControlUseJustMask;    if ( ( windowStyle & wxALIGN_MASK ) & wxALIGN_CENTER_HORIZONTAL )        fontStyle.just = teJustCenter;    else if ( ( windowStyle & wxALIGN_MASK ) & wxALIGN_RIGHT )        fontStyle.just = teJustRight;    // we only should do this in case of a non-standard color, as otherwise 'disabled' controls    // won't get grayed out by the system anymore    if ( foreground != *wxBLACK )    {        fontStyle.foreColor = MAC_WXCOLORREF( foreground.GetPixel() );        fontStyle.flags |= kControlUseForeColorMask;    }    ::SetControlFontStyle( m_controlRef , &fontStyle );}void wxMacControl::SetBackground( const wxBrush &WXUNUSED(brush) ){    // TODO    // setting up a color proc is not recommended anymore}void wxMacControl::SetRange( SInt32 minimum , SInt32 maximum ){    ::SetControl32BitMinimum( m_controlRef , minimum );    ::SetControl32BitMaximum( m_controlRef , maximum );}short wxMacControl::HandleKey( SInt16 keyCode,  SInt16 charCode, EventModifiers modifiers ){#ifndef __LP64__    return HandleControlKey( m_controlRef , keyCode , charCode , modifiers );#else    return 0;#endif}void wxMacControl::SetActionProc( ControlActionUPP   actionProc ){    SetControlAction( m_controlRef , actionProc );}void wxMacControl::SetViewSize( SInt32 viewSize ){    SetControlViewSize(m_controlRef , viewSize );}SInt32 wxMacControl::GetViewSize() const{    return GetControlViewSize( m_controlRef );}bool wxMacControl::IsVisible() const{    return IsControlVisible( m_controlRef );}void wxMacControl::SetVisibility( bool visible , bool redraw ){    SetControlVisibility( m_controlRef , visible , redraw );}bool wxMacControl::IsEnabled() const{#if TARGET_API_MAC_OSX    return IsControlEnabled( m_controlRef );#else    return IsControlActive( m_controlRef );#endif}bool wxMacControl::IsActive() const{    return IsControlActive( m_controlRef );}void wxMacControl::Enable( bool enable ){    if ( enable )        EnableControl( m_controlRef );    else        DisableControl( m_controlRef );}void wxMacControl::SetDrawingEnabled( bool enable ){    HIViewSetDrawingEnabled( m_controlRef , enable );}bool wxMacControl::GetNeedsDisplay() const{    return HIViewGetNeedsDisplay( m_controlRef );}void wxMacControl::SetNeedsDisplay( RgnHandle where ){    if ( !IsVisible() )        return;    HIViewSetNeedsDisplayInRegion( m_controlRef , where , true );}void wxMacControl::SetNeedsDisplay( Rect* where ){    if ( !IsVisible() )        return;    if ( where != NULL )    {        RgnHandle update = NewRgn();        RectRgn( update , where );        HIViewSetNeedsDisplayInRegion( m_controlRef , update , true );        DisposeRgn( update );    }    else        HIViewSetNeedsDisplay( m_controlRef , true );}void  wxMacControl::Convert( wxPoint *pt , wxMacControl *from , wxMacControl *to ){    HIPoint hiPoint;    hiPoint.x = pt->x;    hiPoint.y = pt->y;    HIViewConvertPoint( &hiPoint , from->m_controlRef , to->m_controlRef  );    pt->x = (int)hiPoint.x;    pt->y = (int)hiPoint.y;}void wxMacControl::SetRect( Rect *r ){        //A HIRect is actually a CGRect on OSX - which consists of two structures -        //CGPoint and CGSize, which have two floats each        HIRect hir = { { r->left , r->top }, { r->right - r->left , r->bottom - r->top } };        HIViewSetFrame ( m_controlRef , &hir );        // eventuall we might have to do a SetVisibility( false , true );        // before and a SetVisibility( true , true ); after}void wxMacControl::GetRect( Rect *r ){    GetControlBounds( m_controlRef , r );}void wxMacControl::GetRectInWindowCoords( Rect *r ){    UMAGetControlBoundsInWindowCoords( m_controlRef , r );}void wxMacControl::GetBestRect( Rect *r ){    short   baselineoffset;    GetBestControlRect( m_controlRef , r , &baselineoffset );}void wxMacControl::SetLabel( const wxString &title ){    wxFontEncoding encoding;    if ( m_font.Ok() )        encoding = m_font.GetEncoding();    else        encoding = wxFont::GetDefaultEncoding();    UMASetControlTitle( m_controlRef , title , encoding );}void wxMacControl::GetFeatures( UInt32 * features ){    GetControlFeatures( m_controlRef , features );}OSStatus wxMacControl::GetRegion( ControlPartCode partCode , RgnHandle region ){    OSStatus err = GetControlRegion( m_controlRef , partCode , region );    return err;}OSStatus wxMacControl::SetZOrder( bool above , wxMacControl* other ){#if TARGET_API_MAC_OSX    return HIViewSetZOrder( m_controlRef,above ? kHIViewZOrderAbove : kHIViewZOrderBelow,       (other != NULL) ? other->m_controlRef : NULL);#else    return 0;#endif}#if TARGET_API_MAC_OSX// SetNeedsDisplay would not invalidate the childrenstatic void InvalidateControlAndChildren( HIViewRef control ){    HIViewSetNeedsDisplay( control , true );    UInt16 childrenCount = 0;    OSStatus err = CountSubControls( control , &childrenCount );    if ( err == errControlIsNotEmbedder )        return;    wxASSERT_MSG( err == noErr , wxT("Unexpected error when accessing subcontrols") );    for ( UInt16 i = childrenCount; i >=1; --i )    {        HIViewRef child;        err = GetIndexedSubControl( control , i , & child );        if ( err == errControlIsNotEmbedder )            return;        InvalidateControlAndChildren( child );    }}#endifvoid wxMacControl::InvalidateWithChildren(){#if TARGET_API_MAC_OSX    InvalidateControlAndChildren( m_controlRef );#endif}void wxMacControl::ScrollRect( wxRect *r , int dx , int dy ){    wxASSERT( r != NULL );    HIRect scrollarea = CGRectMake( r->x , r->y , r->width , r->height);    HIViewScrollRect ( m_controlRef , &scrollarea , dx ,dy );}OSType wxMacCreator = 'WXMC';OSType wxMacControlProperty = 'MCCT';void wxMacControl::SetReferenceInNativeControl(){    void * data = this;    verify_noerr( SetControlProperty ( m_controlRef ,        wxMacCreator,wxMacControlProperty, sizeof(data), &data ) );}wxMacControl* wxMacControl::GetReferenceFromNativeControl(ControlRef control){    wxMacControl* ctl = NULL;    ByteCount actualSize;    if ( GetControlProperty( control ,wxMacCreator,wxMacControlProperty, sizeof(ctl) ,        &actualSize , &ctl ) == noErr )    {        return ctl;    }    return NULL;}// ============================================================================// DataBrowser Wrapper// ============================================================================//// basing on DataBrowserItemIDs//IMPLEMENT_ABSTRACT_CLASS( wxMacDataBrowserControl , wxMacControl )pascal void wxMacDataBrowserControl::DataBrowserItemNotificationProc(    ControlRef browser,    DataBrowserItemID itemID,    DataBrowserItemNotification message,    DataBrowserItemDataRef itemData ){    wxMacDataBrowserControl* ctl = wxDynamicCast(wxMacControl::GetReferenceFromNativeControl( browser ), wxMacDataBrowserControl);    if ( ctl != 0 )    {        ctl->ItemNotification(itemID, message, itemData);    }}pascal OSStatus wxMacDataBrowserControl::DataBrowserGetSetItemDataProc(    ControlRef browser,    DataBrowserItemID itemID,    DataBrowserPropertyID property,    DataBrowserItemDataRef itemData,    Boolean changeValue ){    OSStatus err = errDataBrowserPropertyNotSupported;    wxMacDataBrowserControl* ctl = wxDynamicCast(wxMacControl::GetReferenceFromNativeControl( browser ), wxMacDataBrowserControl);    if ( ctl != 0 )    {        err = ctl->GetSetItemData(itemID, property, itemData, changeValue);    }    return err;}pascal Boolean wxMacDataBrowserControl::DataBrowserCompareProc(    ControlRef browser,    DataBrowserItemID itemOneID,    DataBrowserItemID itemTwoID,    DataBrowserPropertyID sortProperty){    wxMacDataBrowserControl* ctl = wxDynamicCast(wxMacControl::GetReferenceFromNativeControl( browser ), wxMacDataBrowserControl);    if ( ctl != 0 )    {        return ctl->CompareItems(itemOneID, itemTwoID, sortProperty);    }    return false;}DataBrowserItemDataUPP gDataBrowserItemDataUPP = NULL;DataBrowserItemNotificationUPP gDataBrowserItemNotificationUPP = NULL;DataBrowserItemCompareUPP gDataBrowserItemCompareUPP = NULL;wxMacDataBrowserControl::wxMacDataBrowserControl( wxWindow* peer, const wxPoint& pos, const wxSize& size, long style) : wxMacControl( peer ){    Rect bounds = wxMacGetBoundsForControl( peer, pos, size );    OSStatus err = ::CreateDataBrowserControl(        MAC_WXHWND(peer->MacGetTopLevelWindowRef()),        &bounds, kDataBrowserListView, &m_controlRef );    SetReferenceInNativeControl();    verify_noerr( err );    if ( gDataBrowserItemCompareUPP == NULL )        gDataBrowserItemCompareUPP = NewDataBrowserItemCompareUPP(DataBrowserCompareProc);    if ( gDataBrowserItemDataUPP == NULL )        gDataBrowserItemDataUPP = NewDataBrowserItemDataUPP(DataBrowserGetSetItemDataProc);    if ( gDataBrowserItemNotificationUPP == NULL )    {        gDataBrowserItemNotificationUPP =#if TARGET_API_MAC_OSX            (DataBrowserItemNotificationUPP) NewDataBrowserItemNotificationWithItemUPP(DataBrowserItemNotificationProc);#else            NewDataBrowserItemNotificationUPP(DataBrowserItemNotificationProc);#endif    }    DataBrowserCallbacks callbacks;    InitializeDataBrowserCallbacks( &callbacks, kDataBrowserLatestCallbacks );    callbacks.u.v1.itemDataCallback = gDataBrowserItemDataUPP;    callbacks.u.v1.itemCompareCallback = gDataBrowserItemCompareUPP;    callbacks.u.v1.itemNotificationCallback = gDataBrowserItemNotificationUPP;    SetCallbacks( &callbacks );}OSStatus wxMacDataBrowserControl::GetItemCount( DataBrowserItemID container,    Boolean recurse,    DataBrowserItemState state,    ItemCount *numItems) const{    return GetDataBrowserItemCount( m_controlRef, container, recurse, state, numItems );}OSStatus wxMacDataBrowserControl::GetItems( DataBrowserItemID container,    Boolean recurse,    DataBrowserItemState state,    Handle items) const{    return GetDataBrowserItems( m_controlRef, container, recurse, state, items );}OSStatus wxMacDataBrowserControl::SetSelectionFlags( DataBrowserSelectionFlags options ){    return SetDataBrowserSelectionFlags( m_controlRef, options );}OSStatus wxMacDataBrowserControl::AddColumn( DataBrowserListViewColumnDesc *columnDesc,        DataBrowserTableViewColumnIndex position ){    return AddDataBrowserListViewColumn( m_controlRef, columnDesc, position );}OSStatus wxMacDataBrowserControl::GetColumnIDFromIndex( DataBrowserTableViewColumnIndex position, DataBrowserTableViewColumnID* id ){    return GetDataBrowserTableViewColumnProperty( m_controlRef, position, id );}OSStatus wxMacDataBrowserControl::RemoveColumn( DataBrowserTableViewColumnIndex position ){    DataBrowserTableViewColumnID id;    GetColumnIDFromIndex( position, &id );    return RemoveDataBrowserTableViewColumn( m_controlRef, id );}OSStatus wxMacDataBrowserControl::AutoSizeColumns(){    return AutoSizeDataBrowserListViewColumns(m_controlRef);

⌨️ 快捷键说明

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