//************************************************************************************************* void CBCGPVisualManagerVS2008::OnHighlightMenuItem (CDC* pDC, CBCGPToolbarMenuButton* pButton, CRect rect, COLORREF& clrText) { ASSERT_VALID (pDC); ASSERT_VALID (pButton); if (globalData.m_nBitsPerPixel <= 8 || globalData.IsHighContastMode ()) { CBCGPVisualManagerVS2005::OnHighlightMenuItem (pDC, pButton, rect, clrText); return; } const int nRoundSize = 3; const BOOL bIsWinXPBlue = (GetStandardWinXPTheme () == WinXpTheme_Blue); COLORREF clr1 = bIsWinXPBlue ? WINXPBLUE_GRADIENT_DARK : m_clrHighlightGradientDark; COLORREF clr2 = bIsWinXPBlue ? WINXPBLUE_GRADIENT_LIGHT : m_clrHighlightGradientLight; COLORREF clrBorder = bIsWinXPBlue ? WINXPBLUE_MENUITEM_BORDER : m_clrHighlightGradientDark; if (m_bOSColors) { clr1 = m_clrHighlight; clr2 = RGB (255, 255, 255); clrBorder = m_clrHighlightDn; } if (DYNAMIC_DOWNCAST(CBCGPCustomizeMenuButton, pButton) == NULL) { rect.DeflateRect (2, 0); } CRgn rgn; rgn.CreateRoundRectRgn (rect.left, rect.top, rect.right, rect.bottom, nRoundSize, nRoundSize); pDC->SelectClipRgn (&rgn); CBCGPDrawManager dm (*pDC); dm.FillGradient (rect, clr1, clr2, TRUE); pDC->SelectClipRgn (NULL); CPen pen (PS_SOLID, 1, clrBorder); CPen* pOldPen = pDC->SelectObject (&pen); CBrush* pOldBrush = (CBrush*) pDC->SelectStockObject (NULL_BRUSH); pDC->RoundRect (rect.left, rect.top, rect.right, rect.bottom, nRoundSize + 2, nRoundSize + 2); pDC->SelectObject (pOldPen); pDC->SelectObject (pOldBrush); clrText = GetHighlightedMenuItemTextColor (pButton); }
//********************************************************************************************************* void CBCGPVisualManagerVS2008::OnHighlightRarelyUsedMenuItems (CDC* pDC, CRect rectRarelyUsed) { ASSERT_VALID (pDC); if (globalData.m_nBitsPerPixel <= 8 || globalData.IsHighContastMode () || GetStandardWinXPTheme () != WinXpTheme_Blue) { CBCGPVisualManagerVS2005::OnHighlightRarelyUsedMenuItems (pDC, rectRarelyUsed); return; } rectRarelyUsed.left --; rectRarelyUsed.right = rectRarelyUsed.left + CBCGPToolBar::GetMenuImageSize ().cx + 2 * GetMenuImageMargin () + 2; CBrush br (WINXPBLUE_MENU_GUTTER_DARK); pDC->FillRect (rectRarelyUsed, &br); }
void CBCGPVisualManagerVS2005::OnUpdateSystemColors () { BOOL bDefaultWinXPColors = m_bDefaultWinXPColors; m_clrPressedButtonBorder = (COLORREF)-1; m_CurrAppTheme = GetStandardWinXPTheme (); if (m_CurrAppTheme != WinXpTheme_Silver) { m_bDefaultWinXPColors = FALSE; } CBCGPVisualManager2003::OnUpdateSystemColors (); if (!bDefaultWinXPColors) { return; } COLORREF clrMenuButtonDroppedDown = m_clrBarBkgnd; COLORREF clrMenuItemCheckedHighlight = m_clrHighlightDn; if (m_hThemeComboBox == NULL || m_pfGetThemeColor == NULL || (*m_pfGetThemeColor) (m_hThemeComboBox, 5, 0, 3801, &m_colorActiveTabBorder) != S_OK) { m_colorActiveTabBorder = (COLORREF)-1; } if (globalData.m_nBitsPerPixel > 8 && !globalData.IsHighContastMode ()) { m_clrCustomizeButtonGradientLight = CBCGPDrawManager::SmartMixColors ( m_clrCustomizeButtonGradientDark, globalData.clrBarFace, 1.5, 1, 1); if (m_CurrAppTheme == WinXpTheme_Blue || m_CurrAppTheme == WinXpTheme_Olive) { m_clrToolBarGradientDark = CBCGPDrawManager::PixelAlpha ( m_clrToolBarGradientDark, 83); m_clrToolBarGradientLight = CBCGPDrawManager::SmartMixColors ( GetBaseThemeColor (), GetThemeColor (m_hThemeWindow, COLOR_WINDOW), 1., 3, 2); } else if (!m_bIsStandardWinXPTheme) { m_clrToolBarGradientLight = CBCGPDrawManager::SmartMixColors ( m_clrToolBarGradientLight, globalData.clrBarHilite, 1.05, 1, 1); } if (m_CurrAppTheme == WinXpTheme_Blue) { m_clrCustomizeButtonGradientDark = CBCGPDrawManager::PixelAlpha ( m_clrCustomizeButtonGradientDark, 90); m_clrCustomizeButtonGradientLight = CBCGPDrawManager::PixelAlpha ( m_clrCustomizeButtonGradientLight, 115); m_clrToolBarBottomLine = CBCGPDrawManager::PixelAlpha ( m_clrToolBarBottomLine, 85); } else if (m_CurrAppTheme == WinXpTheme_Olive) { m_clrToolBarBottomLine = CBCGPDrawManager::PixelAlpha ( m_clrToolBarBottomLine, 110); m_clrCustomizeButtonGradientDark = m_clrToolBarBottomLine; m_clrCustomizeButtonGradientLight = CBCGPDrawManager::PixelAlpha ( m_clrCustomizeButtonGradientLight, 120); m_clrHighlightDn = globalData.clrHilite; m_clrHighlight = CBCGPDrawManager::PixelAlpha ( m_clrHighlightDn, 124); m_clrHighlightChecked = CBCGPDrawManager::PixelAlpha ( GetThemeColor (m_hThemeWindow, 27 /*COLOR_GRADIENTACTIVECAPTION*/), 98); m_brHighlight.DeleteObject (); m_brHighlightDn.DeleteObject (); m_brHighlight.CreateSolidBrush (m_clrHighlight); m_brHighlightDn.CreateSolidBrush (m_clrHighlightDn); m_brHighlightChecked.DeleteObject (); m_brHighlightChecked.CreateSolidBrush (m_clrHighlightChecked); m_clrHighlightGradientDark = m_clrHighlightChecked; m_clrHighlightGradientLight = CBCGPDrawManager::PixelAlpha ( m_clrHighlightGradientDark, 120); } else if (m_CurrAppTheme != WinXpTheme_Silver) { m_clrToolBarBottomLine = m_clrToolBarGradientDark; } clrMenuButtonDroppedDown = CBCGPDrawManager::PixelAlpha ( m_clrBarBkgnd, 107); clrMenuItemCheckedHighlight = GetThemeColor (m_hThemeWindow, COLOR_HIGHLIGHT); if (m_CurrAppTheme == WinXpTheme_Blue || m_CurrAppTheme == WinXpTheme_Olive) { m_clrBarGradientLight = CBCGPDrawManager::PixelAlpha ( m_clrToolBarGradientLight, 95); m_clrBarGradientDark = CBCGPDrawManager::PixelAlpha ( m_clrBarGradientDark, 97); } m_clrToolbarDisabled = CBCGPDrawManager::SmartMixColors ( m_clrToolBarGradientDark, m_clrToolBarGradientLight, .92, 1, 2); m_clrPressedButtonBorder = CBCGPDrawManager::SmartMixColors ( m_clrMenuItemBorder, globalData.clrBarDkShadow, .8, 1, 2); } m_brMenuButtonDroppedDown.DeleteObject (); m_brMenuButtonDroppedDown.CreateSolidBrush (clrMenuButtonDroppedDown); m_brMenuItemCheckedHighlight.DeleteObject (); m_brMenuItemCheckedHighlight.CreateSolidBrush (clrMenuItemCheckedHighlight); m_penActiveTabBorder.DeleteObject (); if (m_colorActiveTabBorder != (COLORREF)-1) { m_penActiveTabBorder.CreatePen (PS_SOLID, 1, m_colorActiveTabBorder); } m_bDefaultWinXPColors = bDefaultWinXPColors; m_clrInactiveTabText = globalData.clrBtnDkShadow; if (globalData.m_nBitsPerPixel > 8 && !globalData.IsHighContastMode ()) { m_penSeparator.DeleteObject (); COLORREF clrSeparator = CBCGPDrawManager::PixelAlpha ( globalData.clrBarFace, 84); m_penSeparator.CreatePen (PS_SOLID, 1, clrSeparator); } }
//********************************************************************************************************* COLORREF CBCGPVisualManagerVS2008::OnFillCommandsListBackground (CDC* pDC, CRect rect, BOOL bIsSelected) { if (globalData.m_nBitsPerPixel <= 8 || globalData.IsHighContastMode ()) { return CBCGPVisualManagerVS2005::OnFillCommandsListBackground (pDC, rect, bIsSelected); } ASSERT_VALID (this); ASSERT_VALID (pDC); rect.left = 0; const BOOL bIsWinXPBlue = (GetStandardWinXPTheme () == WinXpTheme_Blue) || m_bOSColors; if (bIsSelected) { COLORREF clr1 = bIsWinXPBlue ? WINXPBLUE_GRADIENT_DARK : m_clrHighlightGradientDark; COLORREF clr2 = bIsWinXPBlue ? WINXPBLUE_GRADIENT_LIGHT : m_clrHighlightGradientLight; COLORREF clrBorder = bIsWinXPBlue ? WINXPBLUE_MENUITEM_BORDER : m_clrHighlightGradientDark; if (m_bOSColors) { clr1 = m_clrHighlight; clr2 = RGB (255, 255, 255); clrBorder = m_clrHighlightDn; } CBCGPDrawManager dm (*pDC); dm.FillGradient (rect, clr1, clr2, TRUE); pDC->Draw3dRect (rect, clrBorder, clrBorder); CBCGPToolbarMenuButton dummy; return GetHighlightedMenuItemTextColor (&dummy); } else { pDC->FillRect (rect, &m_brMenuLight); int iImageWidth = CBCGPToolBar::GetMenuImageSize ().cx + GetMenuImageMargin (); CRect rectImages = rect; rectImages.right = rectImages.left + iImageWidth + MENU_IMAGE_MARGIN; if (bIsWinXPBlue) { CBrush br (WINXPBLUE_MENU_GUTTER); pDC->FillRect (rectImages, &br); CPen* pOldPen = pDC->SelectObject (&m_penSeparator); ASSERT (pOldPen != NULL); pDC->MoveTo (rectImages.right, rectImages.top); pDC->LineTo (rectImages.right, rectImages.bottom); pDC->SelectObject (pOldPen); } else { CBCGPDrawManager dm (*pDC); dm.FillGradient (rectImages, m_clrToolBarGradientLight, m_clrToolBarGradientDark, FALSE); } return globalData.clrBarText; } }
void CBCGPVisualManagerVS2008::OnFillBarBackground (CDC* pDC, CBCGPBaseControlBar* pBar, CRect rectClient, CRect rectClip, BOOL bNCArea) { ASSERT_VALID(pBar); ASSERT_VALID(pDC); if (pBar->IsOnGlass ()) { pDC->FillSolidRect (rectClient, RGB (0, 0, 0)); return; } if (DYNAMIC_DOWNCAST (CBCGPReBar, pBar) != NULL || DYNAMIC_DOWNCAST (CBCGPReBar, pBar->GetParent ())) { FillRebarPane (pDC, pBar, rectClient); return; } if (globalData.m_nBitsPerPixel <= 8 || globalData.IsHighContastMode () || !pBar->IsKindOf (RUNTIME_CLASS (CBCGPPopupMenuBar)) || pBar->IsKindOf (RUNTIME_CLASS (CBCGPColorBar)) || pBar->IsKindOf (RUNTIME_CLASS (CBCGPCalculator)) || pBar->IsKindOf (RUNTIME_CLASS (CBCGPCalendarBar)) || GetStandardWinXPTheme () != WinXpTheme_Blue || m_bOSColors) { CBCGPVisualManagerVS2005::OnFillBarBackground (pDC, pBar, rectClient, rectClip, bNCArea); return; } if (rectClip.IsRectEmpty ()) { rectClip = rectClient; } pDC->FillRect (rectClip, &m_brMenuLight); CBCGPPopupMenuBar* pMenuBar = DYNAMIC_DOWNCAST (CBCGPPopupMenuBar, pBar); ASSERT_VALID (pMenuBar); if (!pMenuBar->m_bDisableSideBarInXPMode) { CRect rectImages = rectClient; rectImages.right = rectImages.left + pMenuBar->GetGutterWidth (); if (!pMenuBar->HasGutterLogo()) { rectImages.DeflateRect (0, 1); } CBrush br (WINXPBLUE_MENU_GUTTER); pDC->FillRect (rectImages, &br); CPen* pOldPen = pDC->SelectObject (&m_penSeparator); ASSERT (pOldPen != NULL); pDC->MoveTo (rectImages.right, rectImages.top); pDC->LineTo (rectImages.right, rectImages.bottom); pDC->SelectObject (pOldPen); } }