//********************************************************************************************************* void CBCGPVisualManagerVS2008::OnEraseTabsArea (CDC* pDC, CRect rect, const CBCGPBaseTabWnd* pTabWnd) { ASSERT_VALID (pDC); ASSERT_VALID (pTabWnd); if (globalData.m_nBitsPerPixel <= 8 || globalData.IsHighContastMode () || !pTabWnd->IsVS2005Style () || pTabWnd->IsDialogControl ()) { CBCGPVisualManagerVS2005::OnEraseTabsArea (pDC, rect, pTabWnd); return; } CFrameWnd* pMainFrame = BCGCBProGetTopLevelFrame (pTabWnd); if (pMainFrame->GetSafeHwnd () != NULL) { CRect rectMain; pMainFrame->GetClientRect (rectMain); pMainFrame->MapWindowPoints ((CBCGPTabWnd*)pTabWnd, &rectMain); rect.top = rectMain.top; rect.left = rectMain.left; rect.right = rect.left + globalData.m_rectVirtual.Width () + 10; } CBCGPDrawManager dm (*pDC); dm.FillGradient (rect, m_clrBarGradientDark, m_clrBarGradientLight, FALSE, 0); }
//************************************************************************************************* 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); }
//********************************************************************************************************* COLORREF CBCGPVisualManagerVS2008::OnDrawControlBarCaption (CDC* pDC, CBCGPDockingControlBar* pBar, BOOL bActive, CRect rectCaption, CRect rectButtons) { ASSERT_VALID (pDC); if (!m_bOSColors) { return CBCGPVisualManagerVS2005::OnDrawControlBarCaption (pDC, pBar, bActive, rectCaption, rectButtons); } rectCaption.bottom++; CBCGPDrawManager dm (*pDC); dm.FillGradient (rectCaption, bActive ? globalData.clrActiveCaptionGradient : globalData.clrInactiveCaptionGradient, bActive ? globalData.clrActiveCaption : globalData.clrInactiveCaption, TRUE); return bActive ? globalData.clrCaptionText : globalData.clrInactiveCaptionText; }
//********************************************************************************************************* void CBCGPVisualManagerVS2008::OnEraseTabsButton (CDC* pDC, CRect rect, CBCGPButton* pButton, CBCGPBaseTabWnd* pBaseTab) { ASSERT_VALID (pDC); ASSERT_VALID (pButton); ASSERT_VALID (pBaseTab); if (globalData.m_nBitsPerPixel <= 8 || globalData.IsHighContastMode () || !pBaseTab->IsVS2005Style () || pBaseTab->IsDialogControl () || pButton->IsPressed () || pButton->IsHighlighted ()) { CBCGPVisualManagerVS2005::OnEraseTabsButton (pDC, rect, pButton, pBaseTab); return; } CRgn rgn; rgn.CreateRectRgnIndirect (rect); pDC->SelectClipRgn (&rgn); CFrameWnd* pMainFrame = BCGCBProGetTopLevelFrame (pButton); if (pMainFrame->GetSafeHwnd () != NULL) { CRect rectMain; pMainFrame->GetClientRect (rectMain); pMainFrame->MapWindowPoints (pButton, &rectMain); rect.top = rectMain.top; rect.left = rectMain.left; rect.right = rect.left + globalData.m_rectVirtual.Width () + 10; } CBCGPDrawManager dm (*pDC); dm.FillGradient (rect, m_clrBarGradientDark, m_clrBarGradientLight, FALSE, 0); pDC->SelectClipRgn (NULL); }
//********************************************************************************* void CBCGPVisualManagerVS2005::OnFillAutoHideButtonBackground (CDC* pDC, CRect rect, CBCGPAutoHideButton* pButton) { ASSERT_VALID (pDC); ASSERT_VALID (pButton); if (!m_bRoundedAutohideButtons) { return; } LPPOINT points; int nPoints = CreateAutoHideButtonRegion (rect, pButton->GetAlignment (), points); CRgn rgnClip; rgnClip.CreatePolygonRgn (points, nPoints, WINDING); pDC->SelectClipRgn (&rgnClip); if (globalData.m_nBitsPerPixel <= 8 || globalData.IsHighContastMode ()) { CBCGPVisualManager2003::OnFillAutoHideButtonBackground (pDC, rect, pButton); } else { BOOL bIsHorz = ((pButton->GetAlignment () & CBRS_ALIGN_ANY) == CBRS_ALIGN_LEFT || (pButton->GetAlignment () & CBRS_ALIGN_ANY) == CBRS_ALIGN_RIGHT); CBCGPDrawManager dm (*pDC); dm.FillGradient (rect, m_clrBarGradientDark, m_clrBarGradientLight, !bIsHorz); } pDC->SelectClipRgn (NULL); delete [] points; }
//********************************************************************************************************* void CBCGPVisualManagerVS2008::OnDrawTabResizeBar (CDC* pDC, CBCGPBaseTabWnd* pWndTab, BOOL bIsVert, CRect rect, CBrush* pbrFace, CPen* pPen) { ASSERT_VALID (pDC); ASSERT_VALID (pbrFace); ASSERT_VALID (pPen); ASSERT_VALID (pWndTab); if (globalData.m_nBitsPerPixel <= 8 || globalData.IsHighContastMode () || pWndTab->IsFlatTab ()) { CBCGPVisualManagerVS2005::OnDrawTabResizeBar (pDC, pWndTab, bIsVert, rect, pbrFace, pPen); return; } CRgn rgn; rgn.CreateRectRgnIndirect (rect); pDC->SelectClipRgn (&rgn); CFrameWnd* pMainFrame = BCGCBProGetTopLevelFrame (pWndTab); if (pMainFrame->GetSafeHwnd () != NULL) { CRect rectMain; pMainFrame->GetClientRect (rectMain); pMainFrame->MapWindowPoints (pWndTab, &rectMain); rect.top = rectMain.top; rect.left = rectMain.left; rect.right = rect.left + globalData.m_rectVirtual.Width () + 10; } CBCGPDrawManager dm (*pDC); dm.FillGradient (rect, m_clrBarGradientDark, m_clrBarGradientLight, FALSE, 0); pDC->SelectClipRgn (NULL); }
//********************************************************************************* void CMacStyle::OnFillOutlookPageButton (CDC* pDC, const CRect& rect, BOOL bIsHighlighted, BOOL bIsPressed, COLORREF& clrText) { COLORREF clr1 = RGB (139, 139, 139); COLORREF clr2 = RGB (233, 233, 233); if (bIsPressed) { COLORREF clr = clr1; clr1 = clr2; clr2 = clr; } else if (bIsHighlighted) { clr1 = RGB (153, 153, 153); clr2 = RGB (255, 255, 255); } CBCGPDrawManager dm (*pDC); dm.FillGradient (rect, clr1, clr2, TRUE); clrText = RGB (32, 32, 32); }
//********************************************************************************************************* void CBCGPVisualManagerVS2008::OnFillButtonInterior (CDC* pDC, CBCGPToolbarButton* pButton, CRect rect, CBCGPVisualManager::BCGBUTTON_STATE state) { ASSERT_VALID (pDC); ASSERT_VALID (pButton); CBCGPToolbarMenuButton* pMenuButton = DYNAMIC_DOWNCAST (CBCGPToolbarMenuButton, pButton); BOOL bIsMenuBarButton = pMenuButton != NULL && pMenuButton->GetParentWnd () != NULL && pMenuButton->GetParentWnd ()->IsKindOf (RUNTIME_CLASS (CBCGPMenuBar)); if (bIsMenuBarButton) { rect.bottom -= 2; } if (!bIsMenuBarButton || !pMenuButton->IsDroppedDown ()) { CBCGPVisualManagerVS2005::OnFillButtonInterior (pDC, pButton, rect, state); return; } if (!m_bOSColors) { OnFillHighlightedArea (pDC, rect, &m_brBarBkgnd, pButton); return; } COLORREF clr1 = CBCGPDrawManager::PixelAlpha (m_clrHighlight, 85); COLORREF clr2 = RGB (255, 255, 255); CBCGPDrawManager dm (*pDC); dm.FillGradient (rect, clr1, clr2, TRUE); }
//************************************************************************************** COLORREF CBCGPVisualManagerVS2005::OnDrawControlBarCaption (CDC* pDC, CBCGPDockingControlBar* pBar, BOOL bActive, CRect rectCaption, CRect rectButtons) { ASSERT_VALID (pDC); if (globalData.m_nBitsPerPixel <= 8 || globalData.IsHighContastMode ()) { return CBCGPVisualManagerXP::OnDrawControlBarCaption (pDC, pBar, bActive, rectCaption, rectButtons); } rectCaption.bottom++; COLORREF clrFill; if (!bActive) { if (m_CurrAppTheme == WinXpTheme_Blue || m_CurrAppTheme == WinXpTheme_Olive || m_CurrAppTheme == WinXpTheme_Silver) { clrFill = CBCGPDrawManager::PixelAlpha (m_clrBarGradientDark, 87); CBrush brFill (clrFill); pDC->FillRect (rectCaption, &brFill); pDC->Draw3dRect (rectCaption, globalData.clrBarShadow, globalData.clrBarShadow); } else { CBrush brFill (globalData.clrInactiveCaption); pDC->FillRect (rectCaption, &brFill); return globalData.clrInactiveCaptionText; } } else { if (m_CurrAppTheme == WinXpTheme_Blue || m_CurrAppTheme == WinXpTheme_Olive || m_CurrAppTheme == WinXpTheme_Silver) { COLORREF clrLight = CBCGPDrawManager::PixelAlpha (globalData.clrHilite, 130); CBCGPDrawManager dm (*pDC); dm.FillGradient (rectCaption, globalData.clrHilite, clrLight, TRUE); return globalData.clrTextHilite; } else { pDC->FillRect (rectCaption, &globalData.brActiveCaption); return globalData.clrCaptionText; } } if (GetRValue (clrFill) <= 192 && GetGValue (clrFill) <= 192 && GetBValue (clrFill) <= 192) { return RGB (255, 255, 255); } else { return RGB (0, 0, 0); } }
void COptionsPropSheet::OnDrawPageHeader (CDC* pDC, int nPage, CRect rectHeader) { CSize sizeIcon = m_Icons.GetImageSize (); CBCGPDrawManager dm (*pDC); COLORREF clrBegin, clrFinish; switch (CBCGPVisualManager2010::GetStyle()) { case CBCGPVisualManager2010::VS2010_Blue: clrBegin = RGB(207, 221, 238); clrFinish = RGB(186, 202, 222); break; case CBCGPVisualManager2010::VS2010_Black: clrBegin = RGB(131, 131, 131); clrFinish = RGB(57, 57, 57); break; case CBCGPVisualManager2010::VS2010_Silver: clrBegin = RGB(233, 237, 241); clrFinish = RGB(200, 204, 209); break; } dm.FillGradient (rectHeader, clrBegin, clrFinish); rectHeader.bottom -= 10; CRect rectIcon = rectHeader; rectIcon.left += 20; rectIcon.right = rectIcon.left + sizeIcon.cx; m_Icons.DrawEx (pDC, rectIcon, nPage, CBCGPToolBarImages::ImageAlignHorzLeft, CBCGPToolBarImages::ImageAlignVertCenter); CString strText; BOOL bNameVaild; switch (nPage) { case 0: bNameVaild = strText.LoadString(IDS_STRING_CHANGEOPTIONS); ASSERT(bNameVaild); break; case 1: bNameVaild = strText.LoadString(IDS_STRING_CHANGEVISIT); ASSERT(bNameVaild); break; case 2: bNameVaild = strText.LoadString(IDS_STRING_LINKEUPDATE); ASSERT(bNameVaild); break; } CRect rectText = rectHeader; rectText.left = rectIcon.right + 10; rectText.right -= 20; CFont* pOldFont = pDC->SelectObject (&globalData.fontBold); pDC->SetBkMode (TRANSPARENT); pDC->SetTextColor (globalData.clrBarText); UINT uiFlags = DT_SINGLELINE | DT_VCENTER; CRect rectTextCalc = rectText; pDC->DrawText (strText, rectTextCalc, uiFlags | DT_CALCRECT); if (rectTextCalc.right > rectText.right) { rectText.DeflateRect (0, 10); uiFlags = DT_WORDBREAK; } pDC->DrawText (strText, rectText, uiFlags); pDC->SelectObject (pOldFont); }
//********************************************************************************************************* 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; } }