Windows: Наведите указатель мыши на украшение окна

Почти в любом приложении Windows я замечаю, что удерживание кнопки мыши в неклиентской области приводит к остановке рисования. Почему это необходимо?

Например, у меня есть приложение Managed Direct 3D, в котором отображается вращающийся куб. Если я наведу указатель на строку заголовка и буду удерживать кнопку мыши нажатой, куб перестанет вращаться, даже если я не запрограммировал такое условие в своем цикле.

Почему живопись остановилась? Каковы преимущества? Самое главное, как я могу обойти это?


person Agnel Kurian    schedule 27.10.2008    source источник
comment
Однако я считаю эту «функцию» полезной для отладки. Чтобы приостановить вращающиеся кубики для более тщательного осмотра и тому подобное.   -  person Agnel Kurian    schedule 27.10.2008


Ответы (1)


При нажатии на строку заголовка появляется короткая пауза в то время как оконный менеджер пытается определить, щелкаете ли вы или начинаете перетаскивание (перемещение окна). Если вы все еще удерживаете кнопку, то это перетаскивание: оконный менеджер устанавливает свой собственный цикл сообщений и выдает сообщения, пока вы не отпустите кнопку мыши. Ваше окно по-прежнему должно иметь возможность обрабатывать сообщения, потому что они все равно будут отправлены, но если ваша анимация зависит от пользовательского цикла сообщений, вы застрянете, пока не закончится модальный цикл перетаскивания.

Обойти это, запуская анимацию в ответ на сообщения: таймер кажется мне хорошим выбором.

person Shog9    schedule 27.10.2008
comment
Просто хочу уточнить, что мое приложение не зависит от пользовательского цикла сообщений. Кроме того, я считаю, что эти условия применимы ко всем приложениям в Windows XP (и 2000... не проверял на других). - person Agnel Kurian; 19.02.2010