Поделиться через


Настройка клавиатуры и мыши

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

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

Настройка клавиатуры

На следующем рисунке показана вкладка Клавиатура диалогового окна Настройка.

Вкладка настройки клавиатуры

Вкладка “Клавиатура” в диалоговом окне настройки

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

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

Если требуется поддерживать эту настройку в приложении, необходимо создать объект CKeyboardManager.Чтобы создать объект CKeyboardManager, вызовите функцию CWinAppEx::InitKeyboardManager.Этот метод создает и инициализирует диспетчер ввода.При создании диспетчер ввода вручную, то по-прежнему должны вызывать CWinAppEx::InitKeyboardManager для инициализации.

При использовании мастера для создания приложения, мастер инициализирует диспетчер ввода.После того как приложение инициализирует диспетчер ввода, границы добавить вкладку Клавиатура к компоненту Настройка.

Настройка мыши

На следующем рисунке показана вкладка Мышь диалогового окна Настройка.

Вкладка настройки мыши

Вкладка “Мышь” в диалоговом окне настройки

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

По умолчанию настройка мыши не включается при создании приложения с помощью мастера.

Включить конфигурацию мыши

  1. Инициализируйте объект путем вызова CMouseManagerCWinAppEx::InitMouseManager.

  2. Получите указатель на него указателя мыши с помощью CWinAppEx::GetMouseManager.

  3. Добавление представления на него указателя мыши с помощью метода CMouseManager::AddView.Сделайте это для каждого представления требуется добавить в диспетчер мыши.

После того как приложение инициализирует диспетчер мыши границ добавить вкладку Мышь к компоненту Настроить.Если не добавлена ни одного представления, то доступ на вкладку возникнет необработанное исключение.После создания списка представлений ", вкладка " Мышь доступны для пользователя.

При добавлении нового представления на него указателя мыши, предоставляемые ей уникальный идентификатор.Если требуется поддерживать настройку мыши окна, необходимо обработать сообщение WM_LBUTTONDBLCLICK и вызов функции CWinAppEx::OnViewDoubleClick.При вызове этой функции один из параметров идентификатор для этого окна.Обязанностью программиста отслеживания идентификаторов и объектов, связанных с ними.

Вопросы безопасности

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

Настраиваемых параметров хранятся в реестре.Путем изменения реестра, злоумышленник может заменить идентификатор средства допустимого пользователя с произвольной командой.Когда пользователь дважды щелкает представление, представление обрабатывает команды, которую злоумышленник засадил.Это может вызвать непредвиденную и потенциально опасную расширений функциональности.

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

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

См. также

Ссылки

Класс CKeyboardManager

Класс CMouseManager

Основные понятия

Настройка для MFC

Проблемы безопасности настройки