Java/SWT: как получать события мыши из встроенного окна

Я встраиваю Windows-приложение в свое SWT-приложение, используя "reparenting". Эта часть работает нормально. Теперь я хотел бы подключить мое SWT-приложение к очереди сообщений для встроенного приложения, чтобы получать события перемещения мыши.

Я вижу, что класс ОС в SWT имеет ряд интересных методов для добавления хуков, но я не смог понять, как их использовать.

Кто-нибудь может помочь?

Спасибо

1 ответ

Решение

Это должно работать, но оно основано на использовании рефлексии для вызова не-API, поэтому используйте его на свой страх и риск.

Используйте отражение, чтобы сделать Display.addControl() и Display.removeControl() доступными. Затем используйте его для добавления HWND приложения Windows и элемента управления-владельца к экранному объекту. Теперь, когда событие перемещения мыши отправляется во встроенное приложение, соответствующий элемент управления должен получить событие перемещения мыши.

Для хорошей меры вы должны добавить DisposeListener в владеющий Control и вызвать removeControl (), чтобы события не отправлялись на мертвый HWND.

Другие вопросы по тегам