void Draw() const { if (m_drawEnabled) DrawEnabled(); else DrawDisabled(); }
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 ; }