Flackern & Striche
-
Ich habe eine dialogfeldbasierende Anwendung über die einRechteck "slided", allerdings gibt es Schmiereffekte: Striche und das Rechteck flackert.
Hat jemand einen Rat ?
void CRechteckDlg::OnButtonRectangle() { CString cstrButtonText; GetDlgItem(IDC_BUTTON_RECTANGLE)->GetWindowText(cstrButtonText); if (cstrButtonText == "Start") { m_iFlag = 1; bTimer = TRUE; CWinThread* pThread = AfxBeginThread (threadFunction, this); GetDlgItem(IDC_BUTTON_RECTANGLE)->SetWindowText("Stop"); } else{ m_iFlag = 0; bTimer = FALSE; GetDlgItem(IDC_BUTTON_RECTANGLE)->SetWindowText("Start"); } } UINT CRechteckDlg::threadFunction(LPVOID pParam) { CRechteckDlg* pDlg = (CRechteckDlg*) pParam; pDlg->threadRun(); return 0; } VOID CRechteckDlg::threadRun() { while (m_iFlag) { // Rechteck ausserhalb des definierten Bereichs ? if (rectdata.left >= 400) SetRect(); // Device Kontext des Fensters holen CDC* pDC = GetDC(); CBrush brush(RGB (255, 0, 0)); pDC->SelectObject(&brush); pDC->Rectangle(&rectdata); pDC->DeleteDC(); } } VOID CRechteckDlg::SetRect() { rectdata.left = 10; rectdata.top = 10; rectdata.bottom = 40; rectdata.right = 80; } void CRechteckDlg::OnTimer(UINT nIDEvent) { if (bTimer) { RedrawWindow(&rectdata, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE ); rectdata.left++; rectdata.right++; } CDialog::OnTimer(nIDEvent); }
-
Errinnert mich an den Beitrag: http://www.c-plusplus.net/forum/viewtopic.php?t=53587