Ich habe eine Anwendung mit einer vollständig benutzerdefinierten UI (dh nur eine Reihe gefüllter Kästchen mit Text). Nach etwa 30-60 Minuten Laufzeit ändern sich die UI-Elemente spontan. Beispielsweise verschwinden die weißen Linien (Kanten der Kästchen), der Text ändert seine Größe, usw.
Ich habe einige Vorher-Nachher-Bilder eines der Bildschirme verlinkt. Dieses zeigt, dass alle weißen Linien verschwunden sind. Andere Bildschirme zeigen signifikante Änderungen in der Textgröße.
VORHER: http://s21.postimg.org/cogqodson/BEFORE.png
NACHHER: http://s24.postimg.org/7skx21sid/AFTER.png
Dieses Projekt ist in MS Visual C++ 2010 mit MFC geschrieben und läuft auf Windows 7 Pro.
Hier ist mein OnPaint() Code:
void CMainWindow::OnPaint()
{
CPaintDC dcScreen( this );
CBitmap bitmap;
bitmap.CreateCompatibleBitmap( &dcScreen, m_rect.Width(), m_rect.Height() );
CDC dc;
dc.CreateCompatibleDC( &dcScreen );
CBitmap* pOldBitMap = dc.SelectObject( &bitmap );
dc.FillRect(m_rect, &BGBRUSH);
int bkmode = dc.SetBkMode(TRANSPARENT);
dc.SelectObject(&BGBRUSH);
CPen brightwhitepen(PS_SOLID, 5, RGB(255,255,255));
CPen* pOldPen = dc.SelectObject(&brightwhitepen);
// draw some stuff:
// dc.Rectangle, dc.DrawText, etc.
// ...
// Blit the memory device context to the screen device context
dcScreen.BitBlt
(
0,
0,
m_rect.Width(),
m_rect.Height(),
&dc,
0,
0,
SRCCOPY
);
dc.SetBkMode( bkmode ); // Alten Hintergrundmodus wiederherstellen
dc.SelectObject( pOldPen ); // alten Stift erneut auswählen
dc.SelectObject( pOldBitMap ); // Alte Bitmap wiederherstellen
}
Hat jemand schon einmal ein seltsames Verhalten wie dieses gesehen? Irgendwelche Tipps, wo ich nachforschen kann?
Vielen Dank!