Вопрос

Мое приложение запускается как плагин внутри другого оконного приложения.Таким образом, мое окно часто не имеет фокуса.Теперь, если кто-то наведет курсор мыши на кнопку / меню и нажмет один раз, все, что он сделает, это установит фокус на мое окно.Затем (ы) ему нужно нажать еще раз, чтобы получить фактическую функциональность кнопки.

Это небольшое раздражение, но я бы хотел от него избавиться.Сначала я попытался требовать фокусировки всякий раз, когда мышь попадает в мое диалоговое пространство, но это оказалось еще более раздражающим.Итак, что я хотел бы сделать, это повторить щелчок мыши, чтобы это выглядело так, как будто одним щелчком мыши был изменен фокус И нажата кнопка.

Очевидно, что я должен делать это ТОЛЬКО тогда, когда щелчок привел к SetFocus , в противном случае функция button будет запущена дважды.

Есть какие-нибудь предложения?

Глубоко и навечно в долгу, Дэвид

Это было полезно?

Решение

Моделирование щелчка мыши здесь кажется немного запутанным, но вы всегда можете имитировать любой щелчок мыши в любой точке (X, Y) с помощью API отправки данных через P/Invoke:

[DllImport("user32.dll", SetLastError=true)]
static extern uint SendInput(uint nInputs, INPUT [] pInputs, int cbSize);

Вы также можете повозиться с распространением / генерацией сообщений WM_MOUSEXXXXX напрямую, но я много играл с этим и поверьте мне, когда я говорю, что это полный бред.

Другие советы

Я бы посоветовал вам сохранить поведение как есть;это стандартное поведение для операционной системы, и его изменение может нарушить стандартные рекомендации по удобству использования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top