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


Класс CKeyboardManager

Управляет таблицами клавиш быстрого доступа для окна главного и дочерних фреймов.

Синтаксис

class CKeyboardManager : public CObject

Участники

Открытые конструкторы

Имя Описание
CKeyboardManager::CKeyboardManager Формирует объект CKeyboardManager.

Открытые методы

Имя Описание
CKeyboardManager::CleanUp Очищает таблицы сочетаний клавиш.
CKeyboardManager::FindDefaultAccelerator Извлекает сочетание клавиш по умолчанию для указанной команды и окна.
CKeyboardManager::IsKeyHandled Определяет, обрабатывается ли ключ таблицей акселераторов.
CKeyboardManager::IsKeyPrintable Указывает, можно ли распечатать символ.
CKeyboardManager::IsShowAllAccelerator Указывает, отображаются ли меню все сочетания клавиш для команды или только сочетания клавиш по умолчанию.
CKeyboardManager::LoadState Загружает таблицы сочетаний клавиш из реестра Windows.
CKeyboardManager::ResetAll Перезагрузит таблицы сочетаний клавиш из ресурса приложения.
CKeyboardManager::SaveState Сохраняет таблицы сочетаний клавиш в реестре Windows.
CKeyboardManager::ShowAllAccelerator Указывает, отображает ли платформа все сочетания клавиш для всех команд или один сочетания клавиш для каждой команды. Этот метод не влияет на команды, имеющие только один связанный сочетания клавиш.
CKeyboardManager::TranslateCharToUpper Преобразует символ в верхний регистр.
CKeyboardManager::UpdateAccelTable Обновляет таблицу сочетаний клавиш с новой таблицей сочетаний клавиш.

Замечания

Члены этого класса позволяют сохранять и загружать таблицы сочетаний клавиш в реестр Windows, использовать шаблон для обновления таблиц ключей короткого вырезания и найти сочетания клавиш по умолчанию для команды в окне кадра. Кроме того, CKeyboardManager объект позволяет управлять отображением сочетаний клавиш пользователю.

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

Пример

В следующем примере показано, как получить указатель на CKeyboardManager объект из CWinAppEx класса и как отобразить все сочетания клавиш, связанные с командами меню. Этот фрагмент кода является частью примера пользовательских страниц.

// The GetKeyboardManager method is inherited from the CWinAppEx class.
CKeyboardManager *cKeyboardManager = GetKeyboardManager();
cKeyboardManager->ShowAllAccelerators();

Иерархия наследования

CObject

CKeyboardManager

Требования

Заголовок: afxkeyboardmanager.h

CKeyboardManager::CKeyboardManager

Формирует объект CKeyboardManager.

CKeyboardManager();

Замечания

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

CKeyboardManager::CleanUp

Освобождает ресурсы и очищает CKeyboardManager все сопоставления сочетаний клавиш.

static void CleanUp();

Замечания

Дополнительные сведения о сочетаниях клавиш см. в разделе "Настройка клавиатуры и мыши".

Эта функция не требуется вызывать при выходе приложения, так как платформа вызывает ее автоматически во время выхода приложения.

CKeyboardManager::FindDefaultAccelerator

Извлекает сочетание клавиш по умолчанию для указанной команды и окна.

static BOOL FindDefaultAccelerator(
    UINT uiCmd,
    CString& str,
    CFrameWnd* pWndFrame,
    BOOL bIsDefaultFrame);

Параметры

uiCmd
[in] Идентификатор команды.

str
[out] Ссылка на объект CString.

pWndFrame
[in] Указатель на окно кадра.

bIsDefaultFrame
[in] Указывает, является ли окно фрейма окном по умолчанию.

Возвращаемое значение

Ненулевое значение, если ярлык найден; в противном случае — 0.

Замечания

Этот метод ищет команду, указанную uiCmd , и извлекает сочетания клавиш по умолчанию. Затем метод принимает строку, связанную с этим сочетанием клавиш, и записывает значение в параметр str .

CKeyboardManager::IsKeyHandled

Определяет, обрабатывается ли указанный ключ классом CKeyboardManager.

static BOOL __stdcall IsKeyHandled(
    WORD nKey,
    BYTE fVirt,
    CFrameWnd* pWndFrame,
    BOOL bIsDefaultFrame);

Параметры

nKey
[in] Ключ для проверки.

fVirt
[in] Указывает поведение сочетания клавиш. Список возможных значений см. в разделе "Структура ACCEL".

pWndFrame
[in] Окно фрейма. Этот метод определяет, обрабатывается ли сочетание клавиш в этом кадре.

bIsDefaultFrame
[in] Логический параметр, указывающий, является ли pWndFrame окном фрейма по умолчанию.

Возвращаемое значение

Значение TRUE, если клавиша ярлыка обрабатывается. FALSE, если ключ не обрабатывается или pWndFrame имеет значение NULL.

Замечания

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

CKeyboardManager::IsKeyPrintable

Указывает, можно ли распечатать символ.

static BOOL __stdcall IsKeyPrintable(const UINT nChar);

Параметры

nChar
[in] Символ, проверяющий этот метод.

Возвращаемое значение

Ненулевое значение, если символ печатается, ноль, если он отсутствует.

Замечания

Этот метод завершается ошибкой, если вызов GetKeyboardState завершается ошибкой .

CKeyboardManager::IsShowAllAccelerator

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

static BOOL IsShowAllAccelerators();

Возвращаемое значение

Ненулевое значение, если приложение выводит все сочетания клавиш для команд меню; Значение 0, если приложение отображает только сочетания клавиш по умолчанию.

Замечания

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

CKeyboardManager::LoadState

Загружает таблицы сочетаний клавиш из реестра Windows.

BOOL LoadState(
    LPCTSTR lpszProfileName = NULL,
    CFrameWnd* pDefaultFrame = NULL);

Параметры

lpszProfileName
[in] Путь к реестру, в котором CKeyboardManager сохраняются данные.

pDefaultFrame
[in] Указатель на окно фрейма, используемое в качестве окна по умолчанию.

Возвращаемое значение

Ненулевое значение, если состояние было загружено успешно или 0 в противном случае.

Замечания

Если параметр lpszProfileName имеет значение NULL, этот метод проверяет расположение реестра по умолчанию для CKeyboardManager данных. Расположение реестра по умолчанию указывается классом CWinAppEx. Данные должны быть записаны ранее с помощью метода CKeyboardManager::SaveState.

Если окно по умолчанию не указано, будет использоваться основное окно фрейма приложения.

CKeyboardManager::ResetAll

Перезагрузит таблицы сочетаний клавиш из ресурса приложения.

void ResetAll();

Замечания

Эта функция очищает ярлыки, хранящиеся в экземпляре CKeyboardManager . Затем он перезагрузит состояние диспетчера клавиатуры из ресурса приложения.

CKeyboardManager::SaveState

Сохраняет таблицы сочетаний клавиш в реестре Windows.

BOOL SaveState(
    LPCTSTR lpszProfileName = NULL,
    CFrameWnd* pDefaultFrame = NULL);

Параметры

lpszProfileName
[in] Путь реестра для сохранения CKeyboardManager состояния.

pDefaultFrame
[in] Указатель на окно кадра, которое становится окном по умолчанию.

Возвращаемое значение

Ненулевое значение, если состояние диспетчера клавиатуры было успешно сохранено или 0 в противном случае.

Замечания

Если параметр lpszProfileName имеет значение NULL, этот метод записывает CKeyboardManager состояние в расположение по умолчанию, указанное классом CWinAppEx. Если указать расположение, данные можно загрузить позже с помощью метода CKeyboardManager::LoadState.

Если окно по умолчанию не указано, в качестве окна по умолчанию будет использоваться основное окно фрейма.

CKeyboardManager::ShowAllAccelerator

Отображает все сочетания клавиш, связанные с командами меню.

static void ShowAllAccelerators(
    BOOL bShowAll = TRUE,
    LPCTSTR lpszDelimiter = _afxDefaultAcceleratorDelimiter);

Параметры

bShowAll
[in] Если значение TRUE, будут отображаться все сочетания клавиш. Если значение FALSE, отобразится только первый сочетания клавиш.

lpszDelimiter
[in] Строка для вставки между сочетаниями клавиш. Этот разделитель не действует, если отображается только один сочетания клавиш.

Замечания

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

Сочетания клавиш будут перечислены рядом с командой в строке меню. Если отображаются все сочетания клавиш, строка, предоставляемая lpszDelimiter , отделит отдельные сочетания клавиш.

CKeyboardManager::TranslateCharToUpper

Преобразует символ в верхний регистр.

static UINT TranslateCharToUpper(const UINT nChar);

Параметры

nChar
[in] Символ для преобразования.

Возвращаемое значение

Символ, который является верхним регистром входного параметра.

CKeyboardManager::UpdateAccelTable

Обновляет таблицу сочетаний клавиш с новой таблицей сочетаний клавиш.

BOOL UpdateAccelTable(
    CMultiDocTemplate* pTemplate,
    LPACCEL lpAccel,
    int nSize,
    CFrameWnd* pDefaultFrame = NULL);

BOOL UpdateAccelTable(
    CMultiDocTemplate* pTemplate,
    HACCEL hAccelNew,
    CFrameWnd* pDefaultFrame = NULL);

Параметры

pTemplate
[in] Указатель на шаблон документа.

lpAccel
[in] Указатель на новый сочетания клавиш.

nSize
[in] Размер новой ярлыкной таблицы.

pDefaultFrame
[in] Указатель на окно фрейма по умолчанию.

hAccelNew
[in] Дескриптор новой ярлыкной таблицы.

Возвращаемое значение

Ненулевое значение, если метод выполнен успешно; в противном случае — 0.

Замечания

Эта функция позволяет заменить существующую таблицу ярлыков новыми сочетаниями клавиш для нескольких объектов окна кадра. Функция получает шаблон документа в качестве параметра для получения доступа ко всем объектам окна кадра, подключенным к заданному шаблону документа.

См. также

Диаграмма иерархии
Классы
Класс CWinAppEx
CWinAppEx::InitKeyboardManager
Настройка мыши и клавиатуры