Dobbelt Buffering
Hejsa, jeg er som beskrevet i andre spørgsmål i gang med at lave et termometer,Når termoteret opdaterer kalder det Invalidate(); og derfor kommer skærmen til "flimre". Jeg har fået og vide at nøglen til opgave er at bruge Dobbelt buffering.
Men jeg kan ikke få de til at virke,
http://www.codeproject.com/gdi/flickerfree.asp#xx822717xx
der fra har jeg hentet klassen der skulle virke,
void CTemperatureCtrl::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect cRect;
GetClientRect(&cRect); // Skaffer målene på staticboksen
//// SÆTTER STØRRELSEN PÅ STATIC TIL 100 * 300 ///////////
dc.SetMapMode(MM_ANISOTROPIC);
dc.SetWindowExt(100, 300);
dc.SetViewportExt(cRect.Width(), cRect.Height());
//// DOBBELT BUFFERING /////
// CMemDC pDC(&dc);
//// DOBBELT BUFFERING /////
PaintTermometer(&dc); // Tegner termometeret.
PaintLines(&dc); // Tegner stregerne og skriver celcius og fahrenheit.
PaintTemp(&dc); // Tegner temperaturen.
// Do not call CStatic::OnPaint() for painting messages
}
og sådan ser min onpaint ud,
men når jeg kalder den, bliver størrelsen ikke korrekt, og skærmen bliver bare hvid,
Nogen ideer???
Jeg ved det kan lade sig gøre, og jeg bare skal smide de rigtigte ting med over.
- Nikolaj