Почему событие ILibHPObject.LibHotPnt_Set происходит несколько раз

Автор A.n.d.r.e.w, 17.04.24, 16:41:37

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

A.n.d.r.e.w

Привет форум.
Почему событие ILibHPObject.LibHotPnt_Set происходит по нескольку раз за одно движение мышкой?
Ставлю точку останова, дергаю мышкой, функция отрабатывает то два то три раза.
Опять же пробовал в разных примерах блин то же самое. а мне критично, у меня ёмкая функция выходит
и тормоза на больших чертежах, а я не пойму чё за фигня.
Сейчас начал экспериментировать с зеркальными макро, так вот в первом вызове приходят перевернутые координаты
в следующих нормальные, опять мозг разболелся  :cl:

UU

Мышка у Вас, какая?
Там, есть счётчик, одно движение.
У Вас одно, у мышки несколько, хотите правильно мышь отрабатывать, то тогда нужно флаги ставить и отслеживать состояние мыши, т.е. ей управлять.

A.n.d.r.e.w

Цитата: UU от 17.04.24, 16:53:21Мышка у Вас, какая?

мышек 4шт разных попробовал. эффект наблюдается одинаковый
сделал пустое VCL приложение с событием движения по форме
происходит один раз, всё четко.
Можете попробовать у себя, если не трудно? Тоже несколько или один раз?
на счет таких настроек мыши не слыхал. 15минутный поиск в гугле ничего не дал
можете дать направление?

UU

Попробовал, оно у меня даже не возникает, у меня пример урезанный.

A.n.d.r.e.w


A.n.d.r.e.w

Цитата: UU от 17.04.24, 17:26:59Попробовал, оно у меня даже не возникает, у меня пример урезанный.
а собственно, можно любой пример Gayka из sdk попробовать

UU

Цитата: A.n.d.r.e.w от 17.04.24, 19:22:25а собственно, можно любой пример Gayka из sdk попробовать
Мне, пробовать не надо.

A.n.d.r.e.w

Цитата: UU от 17.04.24, 19:48:27Мне, пробовать не надо.
ну вам же не трудно?!
подтвердите хотя бы что да, вызывается функция несколько раз подряд.
а я вам Благодарность  :cheesy:

UU

Проверил срабатывает один раз, если перемещать Hot-точку и в момент сработки события, за пределы графического поля Компаса и два раза, если в момент срабатывания отпустить кнопку мыши в графическом поле, второе генерирование события я так понимаю приходит именно на отпускание Hot-точки.
+ Благодарностей: 1

A.n.d.r.e.w

Угу. Похоже. Только иногда у меня по три раза срабатывало.
Перехватывать мышь и по событию Windows выставлять флаг?
Буду опять на элементарном примере разбираться.
Спасибо!

A.n.d.r.e.w

а вот если нажать и отпустить ЛКМ на ХотПоинте.
то включается режим сдвига характерной точки
ХП прилипает к курсору и уже с отпущеной ЛКМ можно
изменять положение ХП
05.png
так вот в этом режиме чаще всего событие происходит по три раза
за один сдвиг мыши если не выезжать за границы окна
Хотя кнопку мы уже не трогаем.
Такое ощущение что компас ловит сообщения от Windows, ставит их в очередь
пока сам чем-то занят, а потом когда ему вздумается начинает их все по
очереди отрабатывать за один заход.

A.n.d.r.e.w

Цитата: A.n.d.r.e.w от 18.04.24, 10:22:06Такое ощущение что компас ловит сообщения от Windows, ставит их в очередь
пока сам чем-то занят, а потом когда ему вздумается начинает их все по
очереди отрабатывать за один заход

скорее всего так происходит только во время отладки. разные потоки и всё такое..
ставил хук, считал события на всем протяжении процесса перетаскивания от LibHotPnt_Prepare до LibHotPnt_Complete
получается только на 1 больше у компаса, наверное действительно отпускание кнопки
как предположил UU.
А перевернутые координаты почему приходили, потому что после первого вызова переворачивал на 180 макро для зеркального отображения.
Соответственно и координаты менялись так как в функции LibHotPnt_Set приходят координаты в СК редактируемого макро
а положение курсора в СК вида менялось не значительно.
Короче зря шум поднял  :shu: