#include <afxwin.h> // Asegúrate de incluir el encabezado de MFC
class CMyView : public CView
{
protected:
CBitmap m_bitmap; // Bitmap para almacenar la porción de la pantalla
CRect m_rect; // Rectángulo que define la porción a capturar
public:
void SaveScreenArea(CRect rect);
void RestoreScreenArea(CDC* pDC);
};
// Método para guardar la porción de la pantalla
voidCMyView::SaveScreenArea(CRect rect)
{
// Guardar el rectángulo que se va a capturar
m_rect = rect;
// Crear un bitmap compatible con el DC de la ventana
CDC* pDC = GetDC();
CDC memDC;
memDC.CreateCompatibleDC(pDC);
m_bitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
// Seleccionar el bitmap en el DC de memoria
CBitmap* pOldBitmap = memDC.SelectObject(&m_bitmap);
// Copiar la porción de la pantalla al bitmap
memDC.BitBlt(0, 0, rect.Width(), rect.Height(), pDC, rect.left, rect.top, SRCCOPY);
// Restaurar el bitmap original
memDC.SelectObject(pOldBitmap);
ReleaseDC(pDC);
}
// Método para restaurar la porción de la pantalla
void CMyView::RestoreScreenArea(CDC* pDC)
{
// Dibujar el bitmap en el DC proporcionado
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = memDC.SelectObject(&m_bitmap);
// Dibujar el bitmap en la posición original
pDC->BitBlt(m_rect.left, m_rect.top, m_rect.Width(), m_rect.Height(), &memDC, 0, 0, SRCCOPY);
// Restaurar el bitmap original
memDC.SelectObject(pOldBitmap);
}