Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Мерцание при перерисовке


Автор: kometa_triatlon 20.5.2005, 16:30
http://forum.vingrad.ru/index.php?showtopic=19425&unread= есть решение этой проблемы. Но как применить его, если у меня не OnDraw, а OnPaint? OnPaint не принимает параметра CDC* pDC.

В приложении нет архитектуры документ-вид, так что и класса представления нет, рисование производится в классе фрейма.

smile

Автор: Dreamer_0x01 20.5.2005, 18:57
Код

void TBOE_OKHO::OnPaint()
{

        CDC * pDCDest=GetDC();
        CDC dcMem;
        dcMem.CreateCompatibleDC(pDCDest);
        CBitmap *pPrevBmpMem=dcMem.GetCurrentBitmap();
        CRect rCl;
        GetClientRect(rCl);
        CBitmap BmpNewMem;
        BmpNewMem.CreateCompatibleBitmap(pDCDest, rCl.Width(), rCl.Height());
        dcMem.SelectObject(&BmpNewMem);
        dcMem.FillSolidRect(rCl, RGB(255,255,255)); 
        CDC *pDCTemp=pDCDest;
        pDCDest=&dcMem;



//рисуем в pDCDest, например
            pDCDest->LineTo(100,100);
//окончили рисовать

        pDCDest=pDCTemp;
        pDCDest->BitBlt(rCl.left, rCl.top, rCl.Width(), rCl.Height(), &dcMem,rCl.left, rCl.top, SRCCOPY);
        dcMem.SelectObject(pPrevBmpMem);

}





Для СFrame не пробовал, для CDialog работает ;)


Автор: kometa_triatlon 20.5.2005, 21:24
А весь прикол в CDC * pDCDest=GetDC(); smile


Цитата
Для СFrame не пробовал, для CDialog работает ;)

Не переживай работает smile
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)