Aceleração GDI no Windows 7 / Drawing To Memory Bitmap

Meu programa GDI funciona bem no Windows XP, mas no Windows Vista e 7 parece bastante terrível devido à falta de aceleração de hardware GDI. Lembro-me de ler um artigo há alguns anos dizendo que o Windows 7 adicionava aceleração de hardware a algumas funções da GDI, incluindo a função BitBlt (). Supostamente, se você desenhar em um bitmap de memória e, em seguida, usar BitBlt () para copiar a imagem para sua janela principal, ela terá aproximadamente a mesma velocidade que o XP. Isso é verdade?

Se é verdade, como você faz isso? Eu sou terrível em programar e estou tendo um pouco de dificuldade. Eu criei a classe abaixo para tentar fazê-la funcionar:

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

Na função OnPaint () da janela, adicionei a linha:

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

Eu estava esperando para ver uma caixa preta de 100x100 no canto da janela, mas não funcionou. Eu provavelmente estou fazendo tudo terrivelmente errado, então ficaria grato se alguém pudesse me aconselhar sobre como fazer isso corretamente.

Obrigado por qualquer conselho que você pode oferecer.

questionAnswers(2)

yourAnswerToTheQuestion