完全にカスタム描画された UI (つまり、テキストで満たされたボックスの集まり) を持つアプリケーションがあります。約 30 ~ 60 分の実行時間の後、UI 要素が自然に変化します。たとえば、白い線 (ボックスの境界線) が消えたり、テキストのサイズが変更されたりします。
画面の 1 つの前後の画像にリンクしました。これは、すべての白い線が消えたことを示しています。他の画面では、テキスト サイズが大幅に変更されています。
前: 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
}
誰もこのような奇妙な行動を見たことがありますか? 調査する場所に関するヒントはありますか?
ありがとう!