WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Как убрать мерцание окна?

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Как убрать мерцание окна?
Kosha опубликован 07-04-2001 18:46 MSK   Click Here to See the Profile for Kosha   Click Here to Email Kosha  
Народ! Вот тут такой трабл: хотел избавиться от мерцания в CView (слишком много там рисуется, и сильно заметно). Поступил как обычно: Создаю в памяти CompatibleDC, на нем рисую, а потом BitBlt'ю. Странно, но мерцание только увеличилось. В чем трабл, кто подскажет?

::OnDraw(CDC* pDC)

Если кому надо, вот, выдрал ;-))
CDC BackBufferDC;
CBitmap BackBufferBitmap;
......
[тут GetClientRect'ом узнаю ClientSize]
......

CBitmap BackBufferBitmap;

CClientDC dc(this);
BackBufferDC.CreateCompatibleDC(&dc);

BackBufferBitmap.CreateCompatibleBitmap(&dc,ClientSize.cx,ClientSize.cy);

CBitmap* pOldBitmap = BackBufferDC.SelectObject(&BackBufferBitmap);

CBrush brBackground(::GetSysColor(COLOR_WINDOW));

BackBufferDC.FillRect(&ClientRect, &brBackground);
...................
Тут чего-то рисую на BackBufferDC
...................
pDC->BitBlt(0,0,ClientSize.cx,ClientSize.cy,&BackBufferDC,0,0,SRCCOPY);

BackBufferDC.SelectObject(pOldBitmap);
BackBufferDC.DeleteDC();

Elephant опубликован 09-04-2001 02:03 MSK     Click Here to See the Profile for Elephant  Click Here to Email Elephant     
Попробуй в обработчике WM_ERASEBKGND возвращать FALSE
Kosha опубликован 09-04-2001 02:11 MSK     Click Here to See the Profile for Kosha  Click Here to Email Kosha     
Спасибо, уже догадался. Просто оверрайдил OnUpdate, а там InvalidateRect(NULL,false)

P.S. Elephant, а ты часом не из ЛИТа?

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.