Flackern beim Aktualisieren des Bildschirms beseitigen

Cappaja

Erfahrenes Mitglied
hallo,

ich speichere in einem memory dc eine bitmap ab. eraseDC soll nach dem blitten ausgeführt werden um das flackern welches ich mit invalidate() erhalte zu beseitigen, allerdings wird einfach nicht neugezeichnet sodass neue signale über die alten gemalt werden. was mache ich falsch?

C++:
void CGraph::DataTransfer(LPVOID pParam)
{
	CWiwoDlg* pWiwoDlg = reinterpret_cast<CWiwoDlg*>(pParam);

	// create an memory-dc for saving datapoints
	CDC* pDC = m_pWnd->GetDC();
	CDC memDC, eraseDC;
	memDC.CreateCompatibleDC(pDC);
	eraseDC.CreateCompatibleDC(pDC);
	m_pBitmap = new CBitmap();
	m_pBitmap->CreateBitmap(m_nWidth, m_nHeight, 1, memDC.GetDeviceCaps(BITSPIXEL), NULL);
	m_pEraseBitmap = new CBitmap();
	m_pEraseBitmap->CreateBitmap(m_nWidth, m_nHeight, 1, eraseDC.GetDeviceCaps(BITSPIXEL), NULL);
	memDC.SelectObject(m_pBitmap);
	eraseDC.SelectObject(m_pEraseBitmap);

.................................

	pDC->BitBlt(InpRect.left, InpRect.top, m_nWidth, m_nHeight, &memDC, 0, 0, SRCPAINT);
	pDC->BitBlt(InpRect.left, InpRect.top, m_nWidth, m_nHeight, &eraseDC, 0, 0, SRCPAINT);

	delete pWiwoDlg->m_pGraph->m_pBitmap;
	m_pWnd->ReleaseDC(pDC);

mfg cappaja
 
Zuletzt bearbeitet:
Wahrscheinlich ist deine erase-Bitmap uninitialisiert. Fülle sie mit der Hintergrundfarbe und das Problem müsste gelöst sein.
 
Zurück