我有一个具有完全自定义绘制的 UI 的应用程序(即只是一堆带有文本的填充框)。运行大约 30-60 分钟后,UI 元素会自发变化。例如,白线(框边框)消失,文本调整大小等。
我已经链接到其中一个屏幕的前后图像。这表明所有的白线都消失了。其他屏幕显示文本大小的显着变化。
之前:http ://s21.postimg.org/cogqodson/BEFORE.png
之后:http ://s24.postimg.org/7skx21sid/AFTER.png
该项目使用 MFC 用 MS Visual C++ 2010 编写,并在 Windows 7 Pro 上运行。
这是我的 OnPaint() 代码:
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 ); // Restore old background mode
dc.SelectObject( pOldPen ); // reselect old pen
dc.SelectObject( pOldBitMap ); // Restore old bitmap
}
有没有人见过这样奇怪的行为?关于在哪里调查的任何提示?
谢谢!