MemDC.cpp
上传用户:cn05999
上传日期:2020-06-29
资源大小:84k
文件大小:1k
源码类别:

Static控件

开发平台:

Visual C++

  1. // MemDC.cpp: implementation of the CMemDC class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "CProgressCtrl.h"
  6. #include "MemDC.h"
  7. #ifdef _DEBUG
  8. #undef THIS_FILE
  9. static char THIS_FILE[]=__FILE__;
  10. #define new DEBUG_NEW
  11. #endif
  12. //////////////////////////////////////////////////////////////////////
  13. // Construction/Destruction
  14. //////////////////////////////////////////////////////////////////////
  15. CMemDC::CMemDC(CDC* pDC):CDC()
  16. {
  17. ASSERT(pDC!=NULL);
  18. m_pDC=pDC;
  19. m_pOldBitmap=NULL;
  20. m_bMemDC=!pDC->IsPrinting();
  21. //
  22. if(m_bMemDC)
  23. {
  24. pDC->GetClipBox(&m_rect);
  25. CreateCompatibleDC(pDC);
  26. m_bitmap.CreateCompatibleBitmap(pDC,m_rect.Width(),m_rect.Height());
  27. m_pOldBitmap=SelectObject(&m_bitmap);
  28. SetWindowOrg(m_rect.left,m_rect.top);
  29. }
  30. else //为相关的现有设备准备打印
  31. {
  32. m_bPrinting=pDC->m_bPrinting;
  33. m_hDC=pDC->m_hDC;
  34. m_hAttribDC=pDC->m_hAttribDC;
  35. }
  36. }
  37. CMemDC::~CMemDC()
  38. {
  39. if(m_bMemDC)
  40. {
  41. m_pDC->BitBlt(m_rect.left,m_rect.top,m_rect.Width(),m_rect.Height(),
  42. this,m_rect.left,m_rect.top,SRCCOPY);
  43. SelectObject(m_pOldBitmap);
  44. }
  45. else
  46. {
  47. m_hDC=m_hAttribDC=NULL;
  48. }
  49. }
  50. // CMemDC* operator->(){return this;}
  51. // operator CMemDC*(){return this;}