Я предполагаю, что вы используете FPC + Lazarus.
Я могу воспроизвести описанную вами проблему, но, признаюсь, я озадачен ее причиной.
Попробуйте следующее:
Убедитесь, что параметры проекта в Lazarus установлены правильно и включают пути к mouse.pp
и двум его файлам включения mouseh.inc
и mouse.inc
.
Putточка останова отладчика на линии b:=PendingMouseEvents
из SysGetMouseEvent
в Mouse.pp
Скомпилируйте и запустите проект
Когда срабатывает точка останова, используйте F8, чтобы пошагово пройти по коду.
Для меня значение b
всегда равно нулю.Вот где он становится немного загадочным:
Если вы ищете исходный код Mouse.PP и два файла inc для любого присвоения PendingMouseEvents
, единственное место, которому присваивается значение, это SysInitMouse
и ClearMouseEventQueue
, и в обоих случаях его значение равно нулю, поэтому SysGetMouseEvent
никогда не завершается и не возвращается к вашему коду.Вот почему ваш оператор case
никогда не выполняется.
Я не уверен, является ли это упущением со стороны авторов кода или как.Я думаю, вы должны попытаться спросить на форуме поддержки Lazarus, https://forum.lazarus.freepascal.org/index.php
Насколько я понимаю, вы используете функции мыши правильно, но они просто не работают должным образом.