Podwójne buforowanie w CListCtrl

0

Witam
Kontrolka CListCtrl w MFC podczas przewijania dużej ilości danych nieprzyjemnie miga. Można przypisać jej styl LVS_EX_DOUBLEBUFFER, który powinien to wyeliminować. Problem w tym że to nie działa. W dokumentacji jest napisane że działać to będzie od Windows XP w górę, ale u mnie to nic nie daje. Czy komuś z Was udało się to zastosować?

0

Usiadłem znów do tego problemu. Podwójne buforowanie nic nie daje jeżeli na liście jest dużo kolumn. Działa to wtedy strasznie wolno.
Chciałbym samemu wszystko rysować w metodzie OnPaint listy, jest jednak jeden problem:
Kod:

 
void CMyList::OnPaint() 
{ 
   CPaintDC dc(this); 

   CRect rc; 
   GetClientRect(&rc); 

   CDC     MemoryDC; 
   CBitmap Bitmap; 
   CBrush  Brush; 

   MemoryDC.CreateCompatibleDC(&dc); 
   Bitmap.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height()); 
   CBitmap *pOldBitmap = MemoryDC.SelectObject(&Bitmap); 

   Brush.CreateSolidBrush(RGB(200,200,200)); 
   MemoryDC.FillRect(&CRect(0,0, rc.Width(), rc.Height()), &Brush); 

   MemoryDC.Rectangle(10,10,100,100); 

   CRect rcDraw = rc - rc.TopLeft(); 

   dc.BitBlt(rc.left,rc.top, rc.Width(),rc.Height(), &MemoryDC, rcDraw.left,rcDraw.top, SRCCOPY); 

} 

Wszystko byłoby ok, gdyby nie to że przy przewijaniu listy suwakami, cała zawartość się zamazuje. Zamiast całość narysować od nowa, lista próbuje przesunąć to co już jest.
Jeżeli natomiast użyję:
Kod:

CDC *dc; 
dc = this->GetDC(); 

To wtedy rysuje i przewija się poprawnie, ale OnPaint jest wykonywane bez przerwy. Jak to ugryźć?

1 użytkowników online, w tym zalogowanych: 0, gości: 1