judelaw
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Bai_Hou Цитата: Куда более логично просить сделать отмену паузы по отжатию, если было перемещение окна. Зачем вообще продолжать воспроизведение в процессе перемещения? | Посмотрел что можно сделать. Куча проблем. Во первых: Стандартное приложение не позволяет таскать окно за рабочую область. Для того чтоб таскалось - костыли делают, один из них в виде обмана, посылая сообщение винде что тянем якобы на заголовок окна. Во вторых: такого события как тянуть окно мышкой нет, для этого нужно сразу несколько событий: отслеживать левый клик(DOWN), перемещение мыши и левый клик(UP). Выставлять нужные флаги переменным, что нажата левая кнопка, с нажатой кнопкой мышь перемещается, отжата кнопка (закончилось перемещение, сброс переменных). И нашу команду посылать уже в конце, так как раньше мы не узнаем тянулось ли окно. Но дело в том, что с костылем, дающим возможность перемещать окно за область вьюхи, нет события lup (кнопку отпустили), не ловится или же криво срабатывает через раз. Усугубляет ситуацию и то, что некоторые команды посылаются винде через PostMessage, то есть через виндовый менеджер очереди (как быстро отработается не ясно), а команды назначенные нами на событие мыши - мгновенно. На LDOWN вообще нереально. Криво можно на LUP сделать. Но начнутся проблемы с двойным кликом, вторым окном эксклюзива и еще куча нюансов. Через таймер будет тупить с задержкой. Короче говоря нормальных вариантов нет, чтоб повесить на левый клик событие и в то же время не выполнять при перемещении окна мышкой. | Всего записей: 2830 | Зарегистр. 22-09-2009 | Отправлено: 18:14 08-11-2012 | Исправлено: judelaw, 18:34 08-11-2012 |
|