Aceleración GDI en Windows 7 / Dibujo a mapa de bits de memoria

Mi programa GDI funciona bien en Windows XP pero en Windows Vista y 7 se ve bastante terrible debido a la falta de aceleración de hardware de GDI. Recuerdo haber leído un artículo hace unos años diciendo que Windows 7 agregó aceleración de hardware a algunas funciones GDI, incluida la función BitBlt (). Supuestamente, si dibuja en un mapa de bits de memoria y luego utiliza BitBlt () para copiar la imagen en su ventana principal, se ejecuta aproximadamente a la misma velocidad que XP. ¿Es eso cierto?

Si es verdad, ¿cómo lo haces? Soy terrible en la programación y estoy teniendo un poco de problemas. Creé la siguiente clase para intentar que funcione:

class CMemBmpTest
{
private: 
    CDC         m_dcDeviceContext;
    CBitmap     m_bmpDrawSurface;

public:
    CMemBmpTest();
    ~CMemBmpTest();
    void Init();
    void Draw();
};

CMemBmpTest::CMemBmpTest()
{
}

CMemBmpTest::~CMemBmpTest()
{
    m_bmpDrawSurface.DeleteObject();
    m_dcDeviceContext.DeleteDC();
}

void CMemBmpTest::Init()
{  
    m_dcDeviceContext.CreateCompatibleDC(NULL);
    m_bmpDrawSurface.CreateCompatibleBitmap(&m_dcDeviceContext, 100, 100);
}

void CMemBmpTest::Draw()
{  
    m_dcDeviceContext.SelectObject(I.m_brshRedBrush);
    m_dcDeviceContext.PatBlt(0, 0, 100, 100, BLACKNESS);
}

En la función OnPaint () de la ventana agregué la línea:

pDC->BitBlt(2, 2, 100, 100, &m_MemBmp, 0, 0, SRCCOPY);

Esperaba ver una caja negra de 100x100 en la esquina de la ventana, pero no funcionó. Probablemente estoy haciendo todo terriblemente mal, así que agradecería que alguien me aconsejara cómo hacerlo correctamente.

Gracias por cualquier consejo que pueda ofrecer.

Respuestas a la pregunta(2)

Su respuesta a la pregunta