Настройка мыши и клавиатуры
MFC позволяет пользователю приложения настраивать их обрабатывает ввода мыши и клавиатуры. Пользователь может настраивать ввода с клавиатуры путем присвоения сочетания клавиш для команд. Пользователь также может настраивать ввода мыши, выбрав команду, которая должна быть выполнена, когда пользователь дважды щелкает внутри конкретного окна приложения. В этом разделе объясняется, как настраивать входные данные для приложения.
В диалоговом окне Настройка, пользователь может изменить пользовательские элементы управления для мыши и клавиатуры. Чтобы открыть это диалоговое окно, точки пользователя в Настроить в меню Вид и нажмите кнопку Закрепление панели инструментов и. В диалоговом окне, пользователем или вкладку Клавиатура или вкладку Мышь.
Настройка клавиатуры
На следующем рисунке показана вкладка Клавиатура диалогового окна Настройка.
Вкладка настроек клавиатуры
Пользователь взаимодействует со вкладкой клавиатуры для присвоения одного или нескольких сочетаний клавиш в команде. Команды, перечисленные в левой части вкладки. Пользователь может выбрать любую доступную команды из меню. Только команды меню можно связать с сочетанием клавиш. После того как пользователь вводит новый ярлык, кнопка Назначить становится доступной. При нажатии этой кнопки, приложение связывает выбранную команду с этим ярлыком.
Все в данный момент сочетания клавиш, перечислены в списке в правом столбце. Пользователь также может выбрать отдельные ярлыки и удалять их, или сбросить все сопоставления для приложения.
Если требуется поддерживать эту настройку в приложении, необходимо создать объект CKeyboardManager. Для создания объекта CKeyboardManager, вызовите функцию CWinAppEx::InitKeyboardManager. Этот метод создает и инициализирует диспетчер клавиатуры. При создании диспетчера клавиатуры вручную, то все равно необходимо вызвать CWinAppEx::InitKeyboardManager для инициализации его.
При использовании мастера для создания приложения, то мастер инициализирует диспетчер клавиатуры. После того как приложение инициализирует диспетчер клавиатуры платформа добавляет на вкладку Клавиатура в диалоговом окне Настройка.
Настройка мыши
На следующем рисунке показана вкладка Мышь диалогового окна Настройка.
Вкладка настройки мыши
Пользователь взаимодействует с этой вкладки для присвоения команды меню в действие двойного щелчка мыши. Пользователь выбирает представление с левой стороны окна и затем использовать элементы управления в правой части для связывания команду с действием двойного щелчка. После того как пользователь щелкает Закрыть, приложение выполняет команду, когда пользователь дважды щелкает в любом месте представления.
По умолчанию при настройке мыши не включена при создании приложения с помощью мастера.
Включить настройки мыши
Инициализируйте объект CMouseManager с помощью метода CWinAppEx::InitMouseManager.
Получите указатель мыши в диспетчер с помощью CWinAppEx::GetMouseManager.
Добавление представления в диспетчер мышь с помощью метода CMouseManager::AddView. Это необходимо сделать для каждого представления необходимо добавить к диспетчеру мыши.
После того как приложение инициализирует диспетчер мыши платформа добавляет на вкладку Мышь в диалоговом окне Настроить. Если не добавить какие-либо представления, доступ к вкладку вызывает необработанное исключение. После создания списка представлений, вкладка Мышь доступна для пользователя.
При добавлении нового представления в диспетчер мышь, необходимо присвоить ей уникальный идентификатор. При необходимости поддержки настройки мыши для окна, то процесс сообщение WM_LBUTTONDBLCLICK и вызова функции CWinAppEx::OnViewDoubleClick. При вызове этой функции, один из параметров идентификатор для этого окна. Обязанностью программиста отслеживания идентификаторов объектов и связанные с ними.
Вопросы безопасности
Как описано в Инструменты, определяемые пользователем, пользователь может связать идентификатор пользовательского средства с событием двойного щелчка. Когда пользователь дважды щелкает представление, приложение ищет средство пользователя, который соответствует удостоверению. Если приложение обнаружит средство сопоставления, он выполняет инструмент. Если приложение не сможет найти средство сопоставления, он отправляет сообщение WM_COMMAND с идентификатором в представление, которое было щелкнуто дважды.
Настраиваемых параметры сохраняются в реестре. Путем редактирования реестра, злоумышленник может заменить идентификатор средства допустимого пользователя с произвольной командой. Когда пользователь дважды щелкает представление, процессы представления команды, который засадил. Это может вызвать непредвиденное и потенциально небезопасное расширения функциональности.
Кроме того, этот тип атак может обойти ограничения интерфейса пользователя. Например, предположим, что приложение содержит запрещенную печать. То есть в пользовательский интерфейс, меню Печать и кнопку недоступны. Обычно это предотвращает приложения из печати. Но если ему изменил реестр, пользователь может теперь может отправлять команды непосредственно на принтер, дважды щелкнув представление, минуя начальный элементы интерфейса пользователя, недоступны.
Для защиты от атак этого типа добавьте код в обработчик команды приложения, чтобы убедиться, что команда допустима, прежде чем она выполняется. Не зависит от интерфейса пользователя для предотвращения команды из списка в приложение.