Подтвердить что ты не робот

Как определить, когда начинается изменение размера и размер формы?

Я работаю с графикой в ​​реальном времени на значительной форме. Когда пользователь изменяет размер формы, я не хочу применять изменение размера к моему графическому рендерингу, пока пользователь не выпустит кнопку мыши, таким образом изменение размера закончится. Как определить это и изменить размер рендеринга только после того, как пользователь закончил изменение формы? Потому что прямо сейчас, если я использую событие OnResize моей формы, он будет постоянно перерисовывать все для каждого пикселя, который перемещает мышь.

Я пробовал события мыши/вверх и отслеживал это, но эти события не вызываются при изменении размера формы.

4b9b3361

Ответ 1

Чтобы обнаружить движение или калибровку, запустите сообщение WM_ENTERSIZEMOVE. Он отправляется в окно, как только пользователь нажимает на панель заголовка окна или на границу размера (что заставляет окно вводить цикл перемещения или калибровки).

Чтобы определить, что перемещение или калибровка закончено, перейдите в WM_EXITSIZEMOVE сообщение. Он отправляется в окно после того, как пользователь выпустит строку заголовка окна или границу размера (что заставляет окно выйти из цикла перемещения или калибровки).

Вы можете поймать любой из них, объявив (и внедряя) их на уровне формы:

procedure WMEnterSizeMove(var Message: TMessage); message WM_ENTERSIZEMOVE;
procedure WMExitSizeMove(var Message: TMessage); message WM_EXITSIZEMOVE;