//********************************************************************************* void CBCGPShadowRenderer::Draw (CDC* pDC, CRect rect, UINT index/* = 0*/, BYTE alphaSrc/* = 255*/) { if (128 <= alphaSrc) { CRect rectInter (rect); if (CBCGPToolBarImages::IsRTL ()) { rectInter.left += m_Params.m_rectSides.left; rectInter.right = rectInter.left + m_Params.m_rectSides.left; } else { rectInter.right -= m_Params.m_rectSides.right; rectInter.left = rectInter.right - m_Params.m_rectSides.right; } rectInter.bottom -= m_Params.m_rectSides.bottom; rectInter.top = rectInter.bottom - m_Params.m_rectSides.bottom; FillInterior (pDC, rectInter, index, alphaSrc); } DrawFrame (pDC, rect, index, alphaSrc); }
//********************************************************************************* void CBCGPControlRenderer::Draw (CDC* pDC, CRect rect, UINT index, BYTE alphaSrc/* = 255*/) { CRect rectInter (rect); rectInter.left += m_Params.m_rectSides.left; rectInter.top += m_Params.m_rectSides.top; rectInter.right -= m_Params.m_rectSides.right; rectInter.bottom -= m_Params.m_rectSides.bottom; FillInterior (pDC, rectInter, index, alphaSrc); DrawFrame (pDC, rect, index, alphaSrc); }
//*************************************************************************************** void CBCGPShowAllButton::OnDraw (CDC* pDC, const CRect& rect, CBCGPToolBarImages* /*pImages*/, BOOL /*bHorz*/, BOOL /*bCustomizeMode*/, BOOL bHighlight, BOOL /*bDrawBorder*/, BOOL /*bGrayDisabledButtons*/) { ASSERT_VALID (pDC); ASSERT_VALID (this); CRect rectBar = rect; rectBar.DeflateRect (1, 1); //---------------------- // Fill button interior: //---------------------- FillInterior (pDC, rect, bHighlight); //----------------------- // Draw "show all" image: //----------------------- CBCGPVisualManager::BCGBUTTON_STATE state = CBCGPVisualManager::ButtonsIsRegular; if (bHighlight) { state = CBCGPVisualManager::ButtonsIsHighlighted; } else if (m_nStyle & (TBBS_PRESSED | TBBS_CHECKED)) { //----------------------- // Pressed in or checked: //----------------------- state = CBCGPVisualManager::ButtonsIsPressed; } CBCGPVisualManager::GetInstance ()->OnDrawShowAllMenuItems (pDC, rectBar, state); //-------------------- // Draw button border: //-------------------- if (m_nStyle & (TBBS_PRESSED | TBBS_CHECKED)) { //----------------------- // Pressed in or checked: //----------------------- CBCGPVisualManager::GetInstance ()->OnDrawButtonBorder (pDC, this, rectBar, CBCGPVisualManager::ButtonsIsPressed); } else if (bHighlight) { CBCGPVisualManager::GetInstance ()->OnDrawButtonBorder (pDC, this, rectBar, CBCGPVisualManager::ButtonsIsHighlighted); } }
//***************************************************************************************** void CLineStyleMenuItem::OnDraw (CDC* pDC, const CRect& rect, CMFCToolBarImages* /*pImages*/, BOOL /*bHorz*/, BOOL /*bCustomizeMode*/, BOOL bHighlight, BOOL /*bDrawBorder*/, BOOL /*bGrayDisabledButtons*/) { ASSERT_VALID (pDC); CRect rectItem = rect; rectItem.DeflateRect (1, 1); //-------------------- // Fill item interior: //-------------------- FillInterior (pDC, rectItem, bHighlight); //----------------- // Draw text label: //----------------- CRect rectText = rectItem; rectText.DeflateRect (nHorzMargin, 0); rectText.right = rectText.left + afxGlobalData.GetTextWidth () * 4; pDC->DrawText (m_strText, rectText, DT_SINGLELINE | DT_VCENTER); //----------- // Draw line: //----------- CRect rectLine = rectItem; rectLine.left = rectText.right; rectLine.DeflateRect (nHorzMargin, 0); rectLine.top = (rect.top + rect.bottom - m_nWidth) / 2; rectLine.bottom = rectLine.top + m_nWidth; pDC->FillSolidRect (rectLine, GetSysColor (COLOR_WINDOWTEXT)); //------------- // Draw border: //------------- if (m_nStyle & TBBS_CHECKED) { pDC->Draw3dRect (rectItem, GetSysColor (COLOR_3DSHADOW), GetSysColor (COLOR_3DHILIGHT)); } else if (bHighlight) { pDC->Draw3dRect (rectItem, GetSysColor (COLOR_3DHILIGHT), GetSysColor (COLOR_3DSHADOW)); } }
//********************************************************************************* void CBCGPControlRenderer::FillInterior (CDC* pDC, CRect rect, UINT index, BYTE alphaSrc/* = 255*/) { FillInterior (pDC, rect, CBCGPToolBarImages::ImageAlignHorzStretch, CBCGPToolBarImages::ImageAlignVertStretch, index, alphaSrc); }
//***************************************************************************************** void CBCGPCalendarMenuButton::OnDraw (CDC* pDC, const CRect& rect, CBCGPToolBarImages* pImages, BOOL bHorz, BOOL bCustomizeMode, BOOL bHighlight, BOOL bDrawBorder, BOOL bGrayDisabledButtons) { ASSERT_VALID (this); ASSERT_VALID (pDC); if (m_bMenuMode) { DrawMenuItem (pDC, rect, pImages, bCustomizeMode, bHighlight, bGrayDisabledButtons); return; } //---------------------- // Fill button interior: //---------------------- FillInterior (pDC, rect, bHighlight || IsDroppedDown ()); CSize sizeImage = CBCGPMenuImages::Size (); if (CBCGPToolBar::IsLargeIcons ()) { sizeImage.cx *= 2; sizeImage.cy *= 2; } CRect rectInternal = rect; CSize sizeExtra = m_bExtraSize ? visualManagerInstance->GetButtonExtraBorder () : CSize (0, 0); if (sizeExtra != CSize (0, 0)) { rectInternal.DeflateRect (sizeExtra.cx / 2 + 1, sizeExtra.cy / 2 + 1); } CRect rectParent = rect; CRect rectArrow = rectInternal; const int nMargin = visualManagerInstance->GetMenuImageMargin (); const int xMargin = bHorz ? nMargin : 0; const int yMargin = bHorz ? 0 : nMargin; rectInternal.DeflateRect (xMargin, yMargin); rectParent.DeflateRect (xMargin, yMargin); if (m_bDrawDownArrow) { if (bHorz) { rectParent.right -= sizeImage.cx + SEPARATOR_SIZE; rectArrow.left = rectParent.right - 1; rectArrow.OffsetRect (-sizeExtra.cx / 2, -sizeExtra.cy / 2); } else { rectParent.bottom -= sizeImage.cy + SEPARATOR_SIZE; rectArrow.top = rectParent.bottom - 1; } } UINT uiStyle = m_nStyle; if (visualManagerInstance->IsMenuFlatLook ()) { m_nStyle &= ~(TBBS_PRESSED | TBBS_CHECKED); } else { if (m_bClickedOnMenu && m_nID != 0 && m_nID != (UINT) -1 && !m_bMenuOnly) { m_nStyle &= ~TBBS_PRESSED; } else if (m_pPopupMenu != NULL) { m_nStyle |= TBBS_PRESSED; } } BOOL bDisableFill = m_bDisableFill; m_bDisableFill = TRUE; CBCGPToolbarButton::OnDraw (pDC, rectParent, pImages, bHorz, bCustomizeMode, bHighlight, bDrawBorder, bGrayDisabledButtons); m_bDisableFill = bDisableFill; if (m_bDrawDownArrow) { if ((m_nStyle & (TBBS_PRESSED | TBBS_CHECKED)) && !visualManagerInstance->IsMenuFlatLook ()) { rectArrow.OffsetRect (1, 1); } BOOL bDisabled = (bCustomizeMode && !IsEditable ()) || (!bCustomizeMode && (m_nStyle & TBBS_DISABLED)); int iImage; if (bHorz && !m_bMenuOnly) { iImage = CBCGPMenuImages::IdArowDown; } else { iImage = CBCGPMenuImages::IdArowRight; } if (m_pPopupMenu != NULL && (m_nStyle & (TBBS_PRESSED | TBBS_CHECKED)) == 0 && !visualManagerInstance->IsMenuFlatLook ()) { rectArrow.OffsetRect (1, 1); } CBCGPMenuImages::Draw (pDC, (CBCGPMenuImages::IMAGES_IDS) iImage, rectArrow, bDisabled ? CBCGPMenuImages::ImageGray : CBCGPMenuImages::ImageBlack, sizeImage); } m_nStyle = uiStyle; if (!bCustomizeMode) { if ((m_nStyle & (TBBS_PRESSED | TBBS_CHECKED)) || m_pPopupMenu != NULL) { //----------------------- // Pressed in or checked: //----------------------- if (!visualManagerInstance->IsMenuFlatLook () && m_bClickedOnMenu && m_nID != 0 && m_nID != (UINT) -1 && !m_bMenuOnly) { visualManagerInstance->OnDrawButtonBorder (pDC, this, rectParent, visualManager::ButtonsIsHighlighted); rectArrow.right --; rectArrow.bottom --; visualManagerInstance->OnDrawButtonBorder (pDC, this, rectArrow, visualManager::ButtonsIsPressed); } else { visualManagerInstance->OnDrawButtonBorder (pDC, this, rect, visualManager::ButtonsIsPressed); } } else if (bHighlight && !(m_nStyle & TBBS_DISABLED) && !(m_nStyle & (TBBS_CHECKED | TBBS_INDETERMINATE))) { visualManagerInstance->OnDrawButtonBorder (pDC, this, rect, visualManager::ButtonsIsHighlighted); } } }