//********************************************************************** void CBCGPToolTipCtrl::OnFillBackground (CDC* pDC, CRect rect, COLORREF& clrText, COLORREF& clrLine) { ASSERT_VALID (pDC); if (m_Params.m_clrFill == (COLORREF)-1) { CBCGPVisualManager::GetInstance ()->OnFillToolTip (pDC, this, rect, clrText, clrLine); } else { if (m_Params.m_clrFillGradient == (COLORREF)-1) { CBrush br (m_Params.m_clrFill); pDC->FillRect (rect, &br); } else { CBCGPDrawManager dm (*pDC); dm.FillGradient2 (rect, m_Params.m_clrFillGradient, m_Params.m_clrFill, m_Params.m_nGradientAngle == -1 ? 90 : m_Params.m_nGradientAngle); } } }
//********************************************************************************** void CToolPalette::DoPaint(CDC* pDC) { CRect rcClient; GetClientRect(rcClient); CBCGPMemDC bufferDC(*pDC, rcClient); CBCGPToolBar::DoPaint (&bufferDC.GetDC()); CBCGPDrawManager dm (bufferDC.GetDC()); bool bHorizontal = (GetCurrentAlignment() & CBRS_ORIENT_HORZ) != 0; // Toolbar layout mode EDisplayOptions edo = GetToolbarDisplayOptions(); if ((edo & eDisplaySizeControl) != 0 && !bHorizontal) { const int sizeControlHeight = m_imgCaption.GetParams().m_rectImage.Height(); CRect rcSizeControl = rcClient; rcSizeControl.bottom = rcSizeControl.top + sizeControlHeight; m_imgCaption.Draw(pDC, rcSizeControl, 1); // 1 is the index of border image rcClient.top += sizeControlHeight; } if ((edo & eDisplayTitle) != 0) { CString title; GetWindowText (title); CRect rcTitle = rcClient; if ((edo & eDisplayBorder) != 0) { const CRect& rectCorners = m_imgCaption.GetParams().m_rectCorners; rcTitle.top += rectCorners.top; } rcTitle.top += 1; rcTitle.bottom = rcTitle.top + m_nCaptionHeight; dm.FillGradient2 (rcTitle, RGB(48, 112, 202), RGB(21, 57, 111), 305); rcTitle.DeflateRect (1, 2, 1, 2); CFont* pOldFont = bufferDC.GetDC().SelectObject(&m_fntTitle); bufferDC.GetDC().SetBkMode(TRANSPARENT); bufferDC.GetDC().SetTextColor(0xFFFFFF); bufferDC.GetDC().DrawText (title, rcTitle, DT_CENTER | DT_VCENTER | DT_NOPREFIX | DT_SINGLELINE | DT_END_ELLIPSIS); bufferDC.GetDC().SelectObject (pOldFont); } if ((edo & eDisplayBorder) != 0) { m_imgCaption.DrawFrame (&bufferDC.GetDC(), rcClient, 0); // 0 is the index of border image } }
void CLoginBarToolTipCtrl::OnPaint() { CPaintDC dc(this); // device context for painting CRect rect; GetClientRect (rect); CBCGPToolTipParams params; visualManagerMFC->GetToolTipParams (params); if (params.m_clrFill == (COLORREF)-1) { ::FillRect (dc.GetSafeHdc (), rect, ::GetSysColorBrush (COLOR_INFOBK)); } else { if (params.m_clrFillGradient == (COLORREF)-1) { CBrush br (params.m_clrFill); dc.FillRect (rect, &br); } else { CBCGPDrawManager dm (dc); dm.FillGradient2 (rect, params.m_clrFillGradient, params.m_clrFill, params.m_nGradientAngle == -1 ? 90 : params.m_nGradientAngle); } } COLORREF clrLine = params.m_clrBorder == (COLORREF)-1 ? ::GetSysColor (COLOR_INFOTEXT) : params.m_clrBorder; COLORREF clrText = params.m_clrText == (COLORREF)-1 ? ::GetSysColor (COLOR_INFOTEXT) : params.m_clrText; dc.Draw3dRect (rect, clrLine, clrLine); CFont* pPrevFont = m_pFont == NULL ? (CFont*) dc.SelectStockObject (DEFAULT_GUI_FONT) : dc.SelectObject (m_pFont); dc.SetBkMode (TRANSPARENT); dc.SetTextColor(clrText); if (m_strText.FindOneOf (_T("\n")) != -1) // multi-line tooltip { rect.DeflateRect (m_nTextMargin, m_nTextMargin); if (rect.Height () < m_rectLast.Height ()) { // center tooltip vertically //rect.top += (m_rectLast.Height () - rect.Height ()) / 2; } //dc.DrawText (m_strText, rect, DT_LEFT | DT_WORDBREAK); DrawTextML (dc, m_strText, rect); } else // single line tooltip { rect.DeflateRect (m_nTextMargin, 0); dc.DrawText (m_strText, rect, DT_LEFT | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX); } if (pPrevFont != NULL) { dc.SelectObject (pPrevFont); } }