BOOL CExtThemeSwitcherToolButton::PutToPopupMenu( CExtPopupMenuWnd * pPopup ) { ASSERT_VALID( this ); ASSERT( pPopup != NULL ); ASSERT( pPopup->GetSafeHwnd() == NULL ); ASSERT( CtrlGet() == NULL ); if( (GetStyle()&TBBS_HIDDEN) != 0 ) return TRUE; if( IsSeparator() ) return CExtBarButton::PutToPopupMenu( pPopup ); ASSERT( ! IsAbleToTrackMenu() ); CExtToolControlBar * pBar = GetBar(); ASSERT_VALID( pBar ); CExtCmdItem * pCmdItem = g_CmdManager->CmdGetPtr( g_CmdManager->ProfileNameFromWnd( pBar->GetSafeHwnd() ), GetCmdID( false ) ); ASSERT( pCmdItem != NULL ); HWND hWndCmdReceiver = pBar->GetSafeHwnd(); int nCheck = ( (GetStyle()&TBBS_CHECKED) != 0 ) ? 1 : 0; // const CExtCmdIcon & _icon = GetIcon(); CExtCmdIcon _icon; // CExtCmdIcon _cmdIconEmpty, * pCmdIcon = ((CExtThemeSwitcherToolControlBar*)pBar)->ThemeSwitcher_GetMenuIconByToolBarCmdID(GetCmdID(false)); // const CExtCmdIcon & _icon = ( pCmdIcon != NULL ) ? ( * pCmdIcon ) : _cmdIconEmpty; CExtSafeString strButtonText; if( (pPopup->TrackFlagsGet()&TPMX_PALETTE) == 0 ) strButtonText = pCmdItem->m_sMenuText; if( ! pPopup->ItemInsertCommand( ((CExtThemeSwitcherToolControlBar*)pBar)->ThemeSwitcher_GetMenuCmdIDByToolBarCmdID(GetCmdID( false )), //GetCmdID( false ), -1, strButtonText.IsEmpty() ? NULL : LPCTSTR(strButtonText), NULL, _icon, nCheck, hWndCmdReceiver ) ) { ASSERT( FALSE ); return FALSE; } CExtPopupMenuWnd::MENUITEMDATA & mi = pPopup->ItemGetInfo( pPopup->ItemGetCount() - 1 ); mi.Enable( IsEnabled() ); mi.SetNoCmdUI( true ); if( ! pCmdItem->m_sTipTool.IsEmpty() ) mi.SetCustomTip( LPCTSTR(pCmdItem->m_sTipTool) ); return TRUE; }
bool CExtMiniDockFrameWnd::_GetSingleVisibleCaptionText( CExtSafeString & sCaption ) { sCaption = _T(""); CFrameWnd * pDockSite = GetParentFrame(); if( pDockSite == NULL ) return false; ASSERT( !pDockSite->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd)) ); POSITION pos = pDockSite->m_listControlBars.GetHeadPosition(); for( ; pos != NULL; ) { CExtControlBar * pBar = DYNAMIC_DOWNCAST( CExtControlBar, ((CControlBar *)(pDockSite->m_listControlBars.GetNext(pos))) ); if( pBar == NULL || pBar->m_pDockSite == NULL || pBar->IsFixedMode() || ( pBar->IsKindOf(RUNTIME_CLASS(CExtDynControlBar)) #if (!defined __EXT_MFC_NO_TAB_CONTROLBARS) && !pBar->IsKindOf(RUNTIME_CLASS(CExtDynTabControlBar)) #endif // (!defined __EXT_MFC_NO_TAB_CONTROLBARS) ) || pBar->GetParentFrame() != this || pBar->IsFloating() || !pBar->IsVisible() ) continue; ASSERT( pBar->m_pDockBar != NULL ); if( #if (!defined __EXT_MFC_NO_TAB_CONTROLBARS) pBar->m_pDockBar->IsKindOf(RUNTIME_CLASS(CExtDockDynTabBar)) || #endif // (!defined __EXT_MFC_NO_TAB_CONTROLBARS) !pBar->m_pDockBar->IsKindOf(RUNTIME_CLASS(CExtDockBar)) ) continue; if( ! pBar->_IsSingleVisibleInFloatingPalette() ) return false; pBar->OnGetBarCaptionText( CExtControlBar::__EBCT_SINGLE_CAPTION_FLOATING, sCaption ); return sCaption.IsEmpty() ? false : true; } return false; }
void CExtMiniDockFrameWnd::OnNcPaint() { CExtControlBar * pExtBar = GetControlBarExt(); bool bExtBar = false; if( pExtBar != NULL && !pExtBar->IsFixedMode() ) bExtBar = true; CRect rcClient, rcBar; GetClientRect(rcClient); ClientToScreen(rcClient); GetWindowRect(rcBar); rcClient.OffsetRect(-rcBar.TopLeft()); rcBar.OffsetRect(-rcBar.TopLeft()); CWindowDC dcSrc( this ); dcSrc.ExcludeClipRect( &rcClient ); CExtMemoryDC dcWin( &dcSrc, &rcBar ); CExtPaintManager::PAINTDOCKINGFRAMEDATA _pdfd( this, rcBar, rcClient, true, bExtBar ); g_PaintManager->PaintDockingFrame( dcWin, _pdfd ); bool bEnableCaptionText = true; CExtSafeString sCaption; if( pExtBar != NULL ) { if( pExtBar->IsKindOf(RUNTIME_CLASS(CExtDynControlBar)) #if (!defined __EXT_MFC_NO_TAB_CONTROLBARS) && ( !pExtBar->IsKindOf(RUNTIME_CLASS(CExtDynTabControlBar)) ) #endif // (!defined __EXT_MFC_NO_TAB_CONTROLBARS) ) bEnableCaptionText = false; else { pExtBar->OnGetBarCaptionText( CExtControlBar::__EBCT_SINGLE_CAPTION_FLOATING, sCaption ); } } if( !bEnableCaptionText ) { if( pExtBar != NULL && pExtBar->IsKindOf(RUNTIME_CLASS(CExtDynControlBar)) ) bEnableCaptionText = _GetSingleVisibleCaptionText( sCaption ); } else if( bEnableCaptionText && sCaption.IsEmpty() ) { if( pExtBar != NULL ) { pExtBar->OnGetBarCaptionText( CExtControlBar::__EBCT_SINGLE_CAPTION_FLOATING, sCaption ); } // if( pExtBar != NULL ) else { int nTextLen = GetWindowTextLength(); if( nTextLen > 0 ) { GetWindowText( sCaption.GetBuffer( nTextLen+2 ), nTextLen+1 ); sCaption.ReleaseBuffer(); } // if( nTextLen > 0 ) } // else from if( pExtBar != NULL ) } CRect rcCapt( m_rcFrameCaption ); CRect rcText( m_rcFrameCaption ); rcText.right = m_rcBtnHideBar.left; if( pExtBar != NULL ) pExtBar->NcButtons_CalcGripperTextLocation( rcText ); bool bActive = false; HWND hTmpWndFocus = ::GetFocus(); if( hTmpWndFocus != NULL && ( GetSafeHwnd() == hTmpWndFocus || ::IsChild( GetSafeHwnd(), hTmpWndFocus ) ) ) bActive = true; rcText.DeflateRect(2,0); CExtPaintManager::PAINTGRIPPERDATA _pgd( this, rcCapt, rcText, bActive, true, false, bExtBar, sCaption.IsEmpty() ? LPCTSTR( NULL ) : sCaption ); g_PaintManager->PaintGripper( dcWin, _pgd ); if( pExtBar != NULL ) { pExtBar->NcButtons_Paint( dcWin ); } // if( pExtBar != NULL ) else { CExtPaintManager::PAINTDOCKINGCAPTIONBUTTONDATA _pdcbd( this, m_rcBtnHideBar, CExtPaintManager::__DCBT_CLOSE, m_bBtnHideBar, false, true, bExtBar, bActive, true ); g_PaintManager->PaintDockingCaptionButton( dcWin, _pdcbd ); } // else from if( pExtBar != NULL ) g_PaintManager->OnPaintSessionComplete( this ); }