Перемещение между диалоговыми элементами управления в Windows Mobile без клавиши табуляции

У меня есть приложение для Windows Mobile 5.0, написанное на C++ MFC, с множеством диалогов. На одном из устройств, на которые я сейчас нацеливаюсь, нет клавиши табуляции, поэтому я бы хотел использовать другую клавишу для перемещения между элементами управления. Это хорошо для кнопок, но не для редактирования элементов управления или комбинированных списков. Я посмотрел на похожий вопрос, но ответ не очень подходит. Я попытался переопределить CDialog::OnKeyDown безрезультатно, и я бы предпочел не переопределять функциональность нажатия клавиш для каждого элемента управления в каждом диалоге. Пока я думаю о том, чтобы написать новые классы, заменяющие CEdit и CComboBox, но, как всегда, я просто проверяю, есть ли более простой способ, например, временно перепрограммировать другой ключ.

2 ответа

Решение

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

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

Если это сработало, вы могли бы перечислить все диалоговые элементы управления и автоматически подклассировать их.

Windows Mobile 6 позволяет переключаться между диалоговыми элементами управления по умолчанию с помощью курсоров - это новый, более "умный" способ перемещения по интерфейсу, и это невероятно удобно.

Разве вы не можете использовать D-Pad для навигации между полями?

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