Я унаследовал приложение MFC, и у него есть окно, в котором есть несколько виджетов для рисования владельцем, которые отвечают на OnPaint
и выполняют различное рисование.
Я заметил, что для того, чтобы заставить элементы управления перерисовываться в ответ на различные действия пользователя, был следующий код:
CRect rect;
m_myControl.GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect(&rect, FALSE);
Я думал, что это можно упростить так:
m_myControl.Invalidate(FALSE);
Но на практике, когда я делаю это таким образом, контроль рисует иногда, а не другие. В частности, когда я взаимодействую с элементами управления в окне, иногда myControl
заканчивается тем, что я просто рисую сплошным серым цветом. Я изменил код обратно на более сложный стиль InvalidateRect
, и он снова отлично работает.
Почему здесь разница?