// 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();
|
}
|