//*******************************************************************************
void CBCGPChartObject::OnDraw(CBCGPGraphicsManager* pGM, const CBCGPRect& rectDiagram)
{
	ASSERT_VALID(this);

	if (m_pParentChart == NULL || !IsVisible())
	{
		return;
	}

	BOOL bWasTransparency = CBCGPGraphicsManagerGDI::IsTransparencyEnabled();
	CBCGPGraphicsManagerGDI::EnableTransparency();

	ASSERT_VALID(m_pParentChart);

	if (!m_pParentChart->OnDrawChartObjectShape(pGM, rectDiagram, this))
	{
		OnDrawShape(pGM, rectDiagram);
	}

	if (!m_strText.IsEmpty() && !m_pParentChart->OnDrawChartObjectText(pGM, rectDiagram, this))
	{
		OnDrawText(pGM, rectDiagram);
	}

	CBCGPGraphicsManagerGDI::EnableTransparency(bWasTransparency);
}
//////////////////
// Draw the tab: mimic SysTabControl32, except use gray if tab is disabled
//
void CMyTabCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
	DRAWITEMSTRUCT& ds = *lpDrawItemStruct;

	int iItem = ds.itemID;

	// Get tab item info
	char text[128];
	TCITEM tci;
	tci.mask = TCIF_TEXT;
	tci.pszText = text;
	tci.cchTextMax = sizeof(text);
	GetItem(iItem, &tci);

	// use draw item DC
	CDC dc;
	dc.Attach(ds.hDC);

	// calculate text rectangle and color
	CRect rc = ds.rcItem;
	rc += CPoint(1,4);						 // ?? by trial and error

	// draw the text
	OnDrawText(dc, rc, text, !IsTabEnabled(iItem));

	dc.Detach();
}
Esempio n. 3
0
//*****************************************************************************
void CBCGPCaptionBar::DoPaint(CDC* pDCIn)
{
	ASSERT_VALID(this);
	ASSERT_VALID(pDCIn);

	CBCGPMemDC memDC(*pDCIn, this);
	CDC* pDC = &memDC.GetDC();

	CRect rectClient;
	GetClientRect(rectClient);

	OnDrawBackground (pDC, rectClient);

	int nOldBkMode = pDC->SetBkMode (TRANSPARENT);
	COLORREF clrOldText = 
		pDC->SetTextColor (m_clrBarText != (COLORREF) -1 ? m_clrBarText : 
		CBCGPVisualManager::GetInstance ()->GetCaptionBarTextColor (this));

	CFont* pOldFont = pDC->SelectObject (
		m_hFont == NULL ? &globalData.fontRegular : CFont::FromHandle (m_hFont));

	CRect rectButton = m_rectButton;
	rectButton.top = max(rectClient.top + 1, rectButton.top);
	rectButton.bottom = min(rectClient.bottom - 1, rectButton.bottom);

	OnDrawButton (pDC, rectButton, m_strBtnText, m_bBtnEnabled);
	OnDrawText (pDC, m_rectDrawText, m_strText);

	if (!m_rectImage.IsRectEmpty ())
	{
		OnDrawImage (pDC, m_rectImage);
	}

	if (!m_rectClose.IsRectEmpty ())
	{
		COLORREF clrText = CBCGPVisualManager::GetInstance ()->OnFillCaptionBarButton (pDC, this,
			m_rectClose, m_bIsCloseBtnPressed, m_bIsCloseBtnHighlighted, FALSE,
			FALSE, TRUE);

		CBCGPVisualManager::GetInstance ()->OnDrawCaptionBarCloseButton(pDC, this, 
			m_rectClose, m_bIsCloseBtnPressed, m_bIsCloseBtnHighlighted, clrText);

		CBCGPVisualManager::GetInstance ()->OnDrawCaptionBarButtonBorder (pDC, this,
			m_rectClose, m_bIsCloseBtnPressed, m_bIsCloseBtnHighlighted, FALSE,
			FALSE, TRUE);
	}

	pDC->SelectObject (pOldFont);
	pDC->SetTextColor (clrOldText);
	pDC->SetBkMode (nOldBkMode);
}
Esempio n. 4
0
void CProgressCtrlST::OnPaint() 
{
	// If there is no bitmap loaded
	if (m_hBitmap == NULL) 
	{
		CProgressCtrl::OnPaint();
		return;
	} // if

	CRect		rcCtrl;
	DWORD		dwStyle			= 0;
	BOOL		bVertical		= FALSE;
	float		f				= 0;
	int			nPercentage		= 0;
	HDC			hdcMem			= NULL;
	HDC			hdcTemp			= NULL;
	HBITMAP		hOldBitmap		= NULL;
	HBITMAP		hbmpTemp		= NULL;
	HBITMAP		hOldTempBitmap	= NULL;
	CPaintDC	dc(this);

	GetClientRect(rcCtrl);

	dwStyle = GetStyle();
	bVertical = (dwStyle & PBS_VERTICAL) == PBS_VERTICAL;

	// Has border ?
	if ((dwStyle & WS_BORDER) == WS_BORDER)
	{
		CBrush brBtnShadow(RGB(0, 0, 0));
		dc.FrameRect(rcCtrl, &brBtnShadow);
		rcCtrl.DeflateRect(1, 1);
	} // if

	rcCtrl.DeflateRect(1, 1);

	hdcMem = ::CreateCompatibleDC(dc.m_hDC);

	// Select bitmap
	hOldBitmap = (HBITMAP)::SelectObject(hdcMem, m_hBitmap);

	// Create temporary DC & bitmap
	hdcTemp = ::CreateCompatibleDC(dc.m_hDC);

	hbmpTemp = ::CreateCompatibleBitmap(hdcMem, rcCtrl.Width(), rcCtrl.Height());
	hOldTempBitmap = (HBITMAP)::SelectObject(hdcTemp, hbmpTemp);

	// Calculate control's percentage to draw
	nPercentage = (int)((100.0/m_nRange)*(abs(m_nLower)+m_nPos));

	// Adjust rectangle to draw on screen
	if (bVertical)
	{
		f = ((float)(rcCtrl.Height())/100)*nPercentage;
		if ((rcCtrl.bottom - (int)f) < rcCtrl.top)
			rcCtrl.top += 1;
		else
			rcCtrl.top = rcCtrl.bottom - (int)f;
	} // if
	else
	{
		f = ((float)(rcCtrl.Width())/100)*nPercentage;
		if ((rcCtrl.left + (int)f) > rcCtrl.right)
			rcCtrl.right -= 1;
		else
			rcCtrl.right = rcCtrl.left + (int)f;
	} // else

	// Tile the bitmap into the temporary rectangle
	TileBitmap(hdcTemp, hdcMem, rcCtrl);

	// Copy from temporary DC to screen (only the percentage rectangle)
	if (rcCtrl.IsRectEmpty() == FALSE)
		::BitBlt(dc.m_hDC, rcCtrl.left, rcCtrl.top, rcCtrl.Width(), rcCtrl.Height(), hdcTemp, 0, 0, SRCCOPY);


	CRect	rcFullCtrl;
	GetClientRect(rcFullCtrl);

	OnDrawText(&dc, nPercentage, rcFullCtrl, rcCtrl, bVertical);
	// Restore old selected bitmaps
	::SelectObject(hdcTemp, hOldTempBitmap);
	::SelectObject(hdcMem, hOldBitmap);

	::DeleteObject( hbmpTemp );
    ::DeleteDC( hdcTemp );
	::DeleteDC( hdcMem );
} // End of OnPaint