Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Таймером, проверяя MDOWN(), не хочется
Исправлено 1 раз(а). Последнее : Ydin, 05.12.22 22:02 |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
_vit Сообщений: 5204 Дата регистрации: 29.07.2002 |
Включи в дебаггере Event Tracking.
Посмотри что происходит. |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Что там смотреть? Resize на движении мыши многократно и на нем Mdown() и в конце и в начале
Какой дебаггер тут... Исправлено 1 раз(а). Последнее : Ydin, 05.12.22 22:52 |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Если никто не ответит быстро, через таймер сделаю.
|
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
akvvohinc Сообщений: 4367 Откуда: Москва Дата регистрации: 11.11.2008 |
Нормальный вариант - делал когда-то такое. В ресайзе формы включал таймер (если он не был включён), который выключал сам себя при NOT MDOWN(). PS А вообще странно, что при нажатии/отпускании мышки в тех областях формы, где действует ресайз, не отрабатывают события MouseDown и MouseUp формы. Я даже подумал, что, возможно, в этой ситуации отрабатывают события MouseDown и MouseUp экрана (_SCREEN), и тогда можно было бы через BINDEVENT() решить задачу, но оказалось, что это не так - я не нашел объекта, который бы ловил эти события в этой ситуации. А ведь в Help о функции MDOWN() написано, что она включена лишь для обратной совместимости, но получается, что MouseDown и MouseUp, которые вроде как пришли ей на смену работают не везде, где работает MDOWN(). Исправлено 1 раз(а). Последнее : akvvohinc, 06.12.22 03:20 |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Да, MouseDown и MouseUp - события объекта, а MDOWN() фунция. Мы же тянем мышкой границы формы и они решили, видимо, что границы - это не область формы. Через таймер создаем событие проверкой функции MDOWN() |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Владимир Максимов Сообщений: 14123 Откуда: Москва Дата регистрации: 02.09.2000 |
Гм... Традиция раз в несколько лет переспрашивать?
19.05.09 - Resize формы 17.02.13 - Resize _Screen'а мышкой. Есть ли событие завершения процесса |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
19.05.09 - Resize формы
Да, это моя ветка - 19.05.09 15:17:37 Читаю и узнаю только свою аваторку. Спасибо, встрепенуло! 17.02.13 - Resize _Screen'а мышкой. Есть ли событие завершения процесса Аналогично! Спасибо, Володя (Максимов). Рад был узнать, что это уже раньше узнавал 2 раза в жизни прямо тут. 74-й год мой -- начинаю стареть. Вам, может, пока не понять! Короче, сейчас на таймере легко получилось. Задача решена. И куда проще с таймером, чем городить
Тогда я работал с FoxCharts и там была совсем другая задача. Уже не помню, но тогда, вроде, на Bindevent получилось. Какая разница сейчас... Исправлено 3 раз(а). Последнее : Ydin, 06.12.22 18:50 |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
_vit Сообщений: 5204 Дата регистрации: 29.07.2002 |
Так еще можно.
Не помню в какой версии появилась возможность биндить оконные сообщения. В 8? 9?
|
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
of63 Сообщений: 25599 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
В наше время. Хорошая деталь в 9-ке
|
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Через таймер не все так просто. Тут, похоже, серьезная и неожиданная проблема.
Побочный эффект. Плавающий, т.е. не сразу на него попадаешь. Таймер отрабатывает, все нормально, но вдруг форма (размеры) начинает меняться от движения мышки. Т.е. мы уже про ресайз забыли, т.к. отпустили мышь... А мышь отжатая на движении рулит размерами. У меня со светом и Интернетом какие-то перебои, я потом вернусь сюда. И так пишу не с первого раза. До встречи! |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
akvvohinc Сообщений: 4367 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Нужен код, чтобы подумать и попробовать. Не помню, чтобы у меня такое случалось. Но в принципе "отжатая мышь", меняющая или перемещающая окна, - такое помню, но это не обязательно случалось при работе в Фоксе. Думаю, у меня это была не программная вещь, а "железная". Оригинальный код мне искать не хочется, но, думаю, он не сильно отличался от чего-то подобного:
Я его немного потыкал - никаких "побочных эффектов" сходу обнаружить не удалось. Надо подумать, может ли что случиться, если юзер успеет отпустить и снова нажать мышь внутри временного интервала таймера. С кодом выше ничего плохого, как мне кажется, случиться не должно, но посмотри, что у тебя, увеличив интервал до нескольких секунд. PS А если под "побочным эффектом" понимать глюк Фокса, то в него я не верю. Исправлено 5 раз(а). Последнее : akvvohinc, 10.12.22 05:22 |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
#DEFINE WM_EXITSIZEMOVE 0x0232
BINDEVENT(THIS.HWND, WM_EXITSIZEMOVE, THIS, 'ExitSizeMove') И все, а там в ExitSizeMove одна строчка у меня. Рулит! Leonid forever! Это именно то, что ожидал от этой темы. |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Не только увеличивал интервал, еще вставлял Inkey() для задержки. Реже возникало или нет трудно сказать. WAIT WINDOW может не мешает. У меня одна строчка там, но она вызывает мой метод частичной перерисовки формы. Я это делал на ресайзе, но были мелькания, а их не любят. Сейчас перерисовка в конце на отпускании мышки. Форма содержит динамически создаваемые текстбоксы, это значения комбобоксов. В зависимости от ширины и высоты формы меняется к-во показываемых строк и столбцов ячеек. Эта форма у меня вызывается в моем классе комбобокса вместо стандарта Фокса. Исправлено 1 раз(а). Последнее : Ydin, 10.12.22 11:27 |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
leonid Сообщений: 3222 Откуда: Рига Дата регистрации: 03.02.2006 |
Думаю, это проблема вовсе не фокса. Я подобные эффекты неоднократно видел в Eclipse. Происходит это когда во время операции drag and drop Eclipse автоматически открывает какое-нибудь модальное окно (есть у него такая привычка), а потом автоматически закрывает его. Так вот, если отпустить кнопку мышки, когда открыто это окно, то сыбытие MOUSE UP будет передано этому окну, а когда оно закроется, drag and drop будет продолжать работать при отпущенной кнопке мышки, поскольку окно, в котором происходит drag and drop событие MOUSE UP не получало. |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Да, это не у Фокса, смотри глубже! Я помню времена, а они и сейчас на Форуме - "не обвиняй Фокс!". И мне это нравится, я этому Фоксу многому обязан... По-любому, BINDEVENT лучше тут, чем таймер! Исправлено 1 раз(а). Последнее : Ydin, 10.12.22 20:37 |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
of63 Сообщений: 25599 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Плюснул. Хорошая деталь фокса. Причем "событие" (вот этот BINDevent) исполняется как подпрограмма в ОТДЕЛЬНОМ (кстати, надо посмотреть при случае стек вызовов в "прерывании" в фоксовой проге
|
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Лучше, когда б минуснул.
Исправлено 7 раз(а). Последнее : Ydin, 11.12.22 20:28 |
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
Ydin Автор Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
В теме "Изменение высоты", но этот BINDEVENT и для ширины
|
Re: Как при изменении высоты формы мышкой поймать событие завершения этого процесса | |
---|---|
_vit Сообщений: 5204 Дата регистрации: 29.07.2002 |
Сообщение WM_EXITSIZEMOVE посылается окну не только когда изменяют его размер но и при его перемещении. Поэтому если надо отловить именно изменение размера окна то надо отлавливать и сообщения WM_ENTERSIZEMOVE, WM_SIZING как у меня в примере. Или использовать какую другую технику например определять изменение координат окна. Ну и через параметр wParam сообщения WM_SIZING можно определить за какой угол/сторону ресайзится окно. |
© 2000-2024 Fox Club  |