У меня есть дети класса CWind, где я подписываюсь на событие OnPaint:
BEGIN_MESSAGE_MAP(MyListBox, CWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
Если в обработчике OnPaint я рисую что-то простое в окне, например, border, все хорошо.Но если я добавлю Sleep(50);
(делая это, я симулирую некоторые сложные операции рисования), мое окно будет мигать.Я не могу понять, почему это происходит ... Может быть, проблема в том, что функция OnPaint вызывается часто, примерно 2-3 раза в секунду.
Обновление: я использую двойной разделитель: сначала я рисую содержимое окна в PaintDeviceContentа затем скопируйте этот DC в DC окна.
Update2: вот код:
void CDirectionsListBox::OnPaint()
{
CRect rectClient;
GetClientRect(rectClient);
CPaintDC dc(this); // device context for painting
CDC DCMem;
DCMem.CreateCompatibleDC( &dc );
// Draw window here, workign with DCMem
dc.BitBlt(0, 0, rectClient.Width(), rectClient.Height(), &DCMem, 0, 0, SRCCOPY);
}