//*********************************************************************************************************
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);
}
Пример #7
0
//*********************************************************************************
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);
	}
}
Пример #10
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;
	}
}