// CHBufferDC.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "CHBufferDC.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CCHBufferDC::CCHBufferDC(CWnd *pParent) : m_pParent(pParent) { ASSERT(pParent); //´ë»ó À©µµ¿ì¿¡ ´ëÇÑ Á¤º¸¸¦ ¼öÁýÇÑ´Ù. m_pTarget = m_pParent->BeginPaint(&m_PaintStruct); m_pParent->GetClientRect(&m_RcClient); m_pParent->GetWindowRect(&m_RcWindow); //´ë»ó À©µµ¿ì¿¡ ´ëÇÑ DC¸¦ »ý¼ºÇÑ´Ù. m_MemoryDC.CreateCompatibleDC(m_pTarget); //´ë»ó DC¿¡ ´ëÇÑ ¸Þ¸ð¸® ºñÆ®¸ÊÀ» »ý¼ºÇÏ¿© Select ÇÑ´Ù. m_MemoryBmp.CreateBitmap(m_RcClient.Width(), m_RcClient.Height(), m_MemoryDC.GetDeviceCaps(PLANES), m_MemoryDC.GetDeviceCaps(BITSPIXEL), 0); m_pOldMemoryBmp = m_MemoryDC.SelectObject(&m_MemoryBmp); //¸Þ¸ð¸® ¹öÆÛ¿¡ AttachÇÑ´Ù. Attach(m_MemoryDC); } ////////////////////////////////////////////////////////////////////// CCHBufferDC::~CCHBufferDC() { //¸Þ¸ð¸® DCÀÇ ³»¿ëÀ» ´ë»ó À©µµ¿ì¿¡ Ãâ·ÂÇÑ´Ù. //³»ºÎÀûÀ¸·Î ºñÆ®¸Ê¿¡ Ãâ·ÂÇÑ °ÍÀÌ¹Ç·Î ÇØ´ç ºñÆ®¸ÊÀ» 1:1·Î º¹»çÇÑ´Ù. m_pTarget->BitBlt( m_PaintStruct.rcPaint.left, m_PaintStruct.rcPaint.top, m_PaintStruct.rcPaint.right - m_PaintStruct.rcPaint.left, m_PaintStruct.rcPaint.bottom - m_PaintStruct.rcPaint.top, &m_MemoryDC, m_PaintStruct.rcPaint.left, m_PaintStruct.rcPaint.top, SRCCOPY); m_MemoryDC.SelectObject(m_pOldMemoryBmp); m_pParent->EndPaint(&m_PaintStruct); Detach(); } ////////////////////////////////////////////////////////////////////// BOOL CCHBufferDC::Attach(HDC hDC) { return CDC::Attach(hDC); } ////////////////////////////////////////////////////////////////////// HDC CCHBufferDC::Detach() { return CDC::Detach(); }