2008-10-27 4 views
5

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

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

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

+0

Я действительно нахожу эту функцию полезной для отладки. Чтобы приостановить вращающиеся кубы для более тщательного осмотра и т. Д. – 2008-10-27 05:24:36

ответ

7

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

Работать вокруг него, вызывая анимацию в ответ на сообщения: таймер кажется хорошим выбором для меня.

+0

Просто хочу пояснить, что мое приложение не зависит от настраиваемого цикла сообщений. Кроме того, я считаю, что эти условия применимы ко всем приложениям в Windows XP (и 2000 ... не тестировались на других). – 2010-02-19 06:24:47

Смежные вопросы