Пример #1
0
 void Draw() const
 {
     if (m_drawEnabled)
         DrawEnabled();
     else
         DrawDisabled();
 }
Пример #2
0
BOOL RWindowsImageList::Draw( HDC hdc, CPoint pt, int nIndex, UINT uiFlags )
{
	if (uiFlags & kDisabled)
	{
		return DrawDisabled( hdc, pt, nIndex ) ;
	}

	CDC   dc ;
	dc.Attach( hdc ) ;

	if (uiFlags & kTransparent)
	{
		CDC   dcMem ;
		dcMem.CreateCompatibleDC( &dc ) ;

		CBitmap bitmap ;
		bitmap.CreateCompatibleBitmap( &dc, m_szImage.cx, m_szImage.cy ) ;

		CBitmap* pBitmap = dcMem.SelectObject( &bitmap ) ;
		
		::BitBlt( dcMem, 0, 0, m_szImage.cx, m_szImage.cy,
			m_hdcImageList, nIndex * m_szImage.cx, 
			m_nImageRow * m_szImage.cy, SRCCOPY ) ;

		COLORREF crBkColor = dcMem.SetBkColor( RGB( 0, 0, 0 ) ) ;
		COLORREF crTxColor = dcMem.SetTextColor( RGB( 255, 255, 255 ) ) ;

		::BitBlt( dcMem, 0, 0, m_szImage.cx, m_szImage.cy,
			m_hdcImageMask, nIndex * m_szImage.cx, 
			m_nImageRow * m_szImage.cy, SRCAND ) ;

		dcMem.SetBkColor( crBkColor ) ;
		dcMem.SetTextColor( crTxColor ) ;

		crBkColor = dc.SetBkColor( RGB( 255, 255, 255 ) ) ;
		crTxColor = dc.SetTextColor( RGB( 0, 0, 0 ) ) ;

		::BitBlt( dc, pt.x, pt.y, m_szImage.cx, m_szImage.cy,
			m_hdcImageMask, nIndex * m_szImage.cx, 
			m_nImageRow * m_szImage.cy, SRCAND ) ;

		dc.SetBkColor( crBkColor ) ;
		dc.SetTextColor( crTxColor ) ;

		dc.BitBlt( pt.x, pt.y, m_szImage.cx, m_szImage.cy,
			&dcMem, 0, 0, SRCINVERT ) ;

		dcMem.SelectObject( pBitmap ) ;
	}
	else
	{
		::BitBlt( dc, pt.x, pt.y, m_szImage.cx, m_szImage.cy,
			m_hdcImageList, nIndex * m_szImage.cx, 
			m_nImageRow * m_szImage.cy, SRCCOPY ) ;
	}

	if (uiFlags & kFocused)
	{
		// Determine and draw the focus rect.
		CRect rect(pt.x + 1, pt.y + 2, pt.x + m_szImage.cx - 2, pt.y + m_szImage.cy - 1) ;
		dc.DrawFocusRect( rect ) ;
	}

	dc.Detach() ;

	return TRUE ;
}