У меня вопрос о странно исходящих сообщениях WM_PAINT, отправленных в мое окно.Это происходит в Windows 7 и не происходит в Windows XP .
Подробно
В моей программе яесть таймер, который запускает обновления GUI, таймер основан на этом вызове API:
CreateTimerQueueTimer
В потоке, предоставленном моей системе для обработки истечения таймера, я делаю некоторые обновления GUI, а именно рисую линию вокно (0,0) -> (57,50) :
HDC hdc = GetDC (hwnd);
MoveToEx (hdc, 0, 0, NULL);
LineTo (hdc, 57, 50);
ReleaseDC(hwnd,hdc);
Работает так, как и следовало ожидать на Windows XP , но на Windows7 это заставляет систему отправлять сообщение WM_PAINT в это окно с регионом обновления: (0,0,58,51) .Обратите внимание, что прямоугольник на один пиксель шире площади квадрата, на которую воздействует линия.
Этот WM_PAINT, получаемый из-за этого рисунка, является чем-то, чего я не понимаю.Окно не трогается / не перекрывается / не изменяется или что-то еще.По-видимому, эта линия распознается системой как недействительность прямоугольника.
И это происходит только в Windows 7 (в отличие от Windows XP).
Вопрос
Это что-то новое в обработке WDM или Windowsв W7?Любой способ избежать этого?
Это может быть ошибка в моей программе или графическом наборе инструментов, который я использую (или оба).Но почему тогда это проявляется только в Windows 7?
Спасибо за любую подсказку!
Денни