Ускорение GDI в Windows 7 / Растровые рисунки в память

Моя программа GDI отлично работает в Windows XP, но в Windows Vista и 7 она выглядит довольно ужасно из-за отсутствия аппаратного ускорения GDI. Я вспоминаю, как несколько лет назад читал статью о том, что в Windows 7 добавлено аппаратное ускорение для некоторых функций GDI, включая функцию BitBlt (). Предположительно, если вы рисуете в битовую карту памяти, а затем используете BitBlt () для копирования изображения в главное окно, оно работает с той же скоростью, что и XP. Это правда?

Если это правда, как ты это делаешь? Я ужасно разбираюсь в программировании и у меня возникли некоторые проблемы. Я создал класс ниже, чтобы попытаться заставить его работать:

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

В функции окна OnPaint () я добавил строку:

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

Я надеялся увидеть черный ящик 100х100 в углу окна, но он не сработал. Я, наверное, все делаю ужасно неправильно, поэтому был бы признателен, если бы кто-нибудь посоветовал мне, как сделать это правильно.

Спасибо за любой совет, который вы можете предложить.

Ответы на вопрос(2)

Ваш ответ на вопрос