Пропуск событий OnMouseDown (Up)
Пишу подобие RemoteAdministrator'a.
На форме TImage. При получении нового пакета (получаю изменившийся фрагмент картинки в формате jpeg, и его координаты) вывожу его через Image->Canvas->Draw(x,y,jpeg);. (до этого пробовал выводить Image->Picture->Bitmap->Canvas->Draw - почему-то частенько вываливалась с OutOfSystemResource - так и не понял, почему).
В программе запускаются 2 второстепенных потока. В одном - получаются сообщения, укладываются в очередь (очередь TMemoryStream'ов). Во втором перерисовывается экран.
Для обратной связи на Image обрабатываю события OnMouseMove, OnMouseDown, OnMouseUp (и так-же для клавы Form->OnKeyDown, Form->OnKeyUp). При срабатывании события - формирую пакет для отправки (код сробытия, координаты или клавиша) и кладу его в очередь на отправку.
Если мееедленно нажимать - то все работает нормально (хотя нет - иногда не срабатывают события Up) если быстро кликнуть - то может вооще не сработать.:( Я так думаю, это происходит, если в этот момент комп занят другим процессом. Можно как-нибудь повысить приоретет клаво-мышынных сообщений, чтобы эти события ловились всегда?
не,ну ты попробуй на простом примере - все события отлавливаются без заминок...видать перегружены именно твои обработчики данных событий...оптимизируй как-нибудь...я у ж молчу про ProcessMessages()...
Цитата:
Originally posted by MVal
Если мееедленно нажимать - то все работает нормально (хотя нет - иногда не срабатывают события Up) если быстро кликнуть - то может вооще не сработать.:(
Если мееедленно нажимать - то все работает нормально (хотя нет - иногда не срабатывают события Up) если быстро кликнуть - то может вооще не сработать.:(
А SetCapture вызываешь, чтобы захватить мышиные события?