memdc.h
上传用户:pengminm
上传日期:2007-01-01
资源大小:30k
文件大小:1k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. #ifndef _MEMDC_H_
  2. #define _MEMDC_H_
  3. //////////////////////////////////////////////////// CMemDC - memory DC//
  4. // Author: Keith Rule
  5. // Email:  keithr@europa.com
  6. // Copyright 1996-1997, Keith Rule
  7. //
  8. // You may freely use or modify this code provided this
  9. // Copyright is included in all derived versions.
  10. //
  11. // History - 10/3/97 Fixed scrolling bug.
  12. //                   Added print support.//
  13. // This class implements a memory Device Context
  14. // History - 3/1/99 Modified from Keith Rule's CMemDC.
  15. //
  16. // This class implements a memory Device Context
  17. class cMemDC : public CDC 
  18. {
  19. private:
  20. CBitmap* m_bitmap;
  21. CBitmap* m_oldBitmap;
  22. CDC* m_pDC;
  23. CRect m_rcBounds;
  24. public:
  25. cMemDC(CDC* pDC, const CRect& rcBounds, long BackColor = RGB(255,255,255)) : 
  26.       CDC(), m_oldBitmap(NULL), m_pDC(pDC), m_rcBounds(rcBounds)
  27.    {
  28. CreateCompatibleDC(pDC);
  29. m_bitmap = new CBitmap;
  30. m_bitmap->CreateCompatibleBitmap(pDC, rcBounds.Width(), rcBounds.Height());
  31. CBrush *pBack = new CBrush(BackColor);
  32.       FillRect(m_rcBounds, pBack);
  33.       delete pBack;
  34.       m_oldBitmap = SelectObject(m_bitmap);
  35. //m_pDC = pDC;
  36. //m_rcBounds = rcBounds;
  37.    }
  38. ~cMemDC() 
  39.    {
  40. //m_pDC->BitBlt(m_rcBounds.left, m_rcBounds.top, m_rcBounds.Width(), m_rcBounds.Height(), 
  41. // this, m_rcBounds.left, m_rcBounds.top, SRCCOPY);
  42. SelectObject(m_oldBitmap);
  43. if (m_bitmap != NULL) delete m_bitmap;
  44.    }
  45.    cMemDC* operator->() {return this;}
  46. };
  47. #endif