Функция LoadKeyboardLayoutA (winuser.h)
Загружает новый идентификатор языкового стандарта ввода (ранее называемый раскладкой клавиатуры) в систему.
до Windows 8: за один раз можно загрузить несколько идентификаторов языкового стандарта ввода, но одновременно активируется только один процесс. Загрузка нескольких входных идентификаторов языкового стандарта позволяет быстро переключаться между ними.
начиная с Windows 8: входной идентификатор языкового стандарта загружается для всей системы. Эта функция не влияет, если текущий процесс не владеет окном с фокусом клавиатуры.
Синтаксис
HKL LoadKeyboardLayoutA(
[in] LPCSTR pwszKLID,
[in] UINT Flags
);
Параметры
[in] pwszKLID
Тип: LPCTSTR
Имя входного идентификатора языкового стандарта для загрузки. Это имя представляет собой строку, состоящую из шестнадцатеричного значения идентификатора языка (низкое слово) и идентификатора устройства (высокое слово). Например, английский язык США имеет идентификатор языка 0x0409, поэтому основной макет английского языка США называется "00000409". Варианты английского языка США (например, макет Dvorak) называются "00010409", "00020409" и т. д.
Список входных макетов, предоставляемых в Windows, см. в разделе Идентификаторы клавиатуры и редакторы методов ввода для Windows.
[in] Flags
Тип: UINT
Указывает способ загрузки входного языкового стандарта. Этот параметр может быть одним или несколькими из следующих значений.
Ценность | Значение |
---|---|
|
до Windows 8: Если указанный идентификатор языкового стандарта ввода еще не загружен, функция загружает и активирует идентификатор входного языкового стандарта для текущего потока.
начиная с Windows 8: Если указанный идентификатор языкового стандарта ввода еще не загружен, функция загружает и активирует входной идентификатор языкового стандарта для системы. |
|
до Windows 8: запрещает процедуре перехватчика ShellProc получать код перехватчика HSHELL_LANGUAGE при загрузке нового идентификатора языкового стандарта ввода. Это значение обычно используется, когда приложение загружает несколько входных идентификаторов языкового стандарта друг за другом. Применение этого значения ко всем, кроме последнего входного языкового стандарта, задерживает обработку оболочки до добавления всех входных идентификаторов языкового стандарта.
начиная с Windows 8: В этом сценарии для всей системы устанавливается последний идентификатор языкового стандарта ввода. |
|
До Windows 8: Перемещает указанный идентификатор языкового стандарта в голову списка входных идентификаторов языкового стандарта, что делает этот идентификатор активным языковым стандартом для текущего потока. Это значение переупорядочение списка входных идентификаторов языкового стандарта, даже если KLF_ACTIVATE не указан.
начиная с Windows 8: перемещает указанный идентификатор языкового стандарта в голову списка входных идентификаторов языкового стандарта, что делает этот идентификатор активным языковым стандартом для системы. Это значение переупорядочение списка входных идентификаторов языкового стандарта, даже если KLF_ACTIVATE не указан. |
|
Если новый идентификатор языкового стандарта ввода имеет тот же идентификатор языка, что и текущий идентификатор языкового стандарта ввода, новый идентификатор языкового стандарта ввода заменяет текущий в качестве входного языкового стандарта для этого языка. Если это значение не указано, а входные идентификаторы языкового стандарта имеют одинаковые идентификаторы языка, текущий идентификатор языкового стандарта ввода не заменен, а функция возвращает NULL. |
|
Заменяет указанный идентификатор языкового стандарта ввода другим языковым стандартом, предпочитаемым пользователем. Система начинается с этого набора флагов и рекомендуется, чтобы приложение всегда использовало этот флаг. Подстановка возникает только в том случае, если раздел реестра HKEY_CURRENT_USER\Keyboard Layout\Substitutes явно определяет языковой стандарт подстановки. Например, если ключ содержит имя значения "00000409" со значением "00010409", загрузка макета США ("00000409") приводит к загрузке макета States-Dvorak ("00010409") вместо этого. Система использует KLF_SUBSTITUTE_OK при загрузке и рекомендуется, чтобы все приложения использовали это значение при загрузке входных идентификаторов языкового стандарта, чтобы убедиться, что выбраны предпочтения пользователя. |
|
До Windows 8: этот флаг действителен только с KLF_ACTIVATE. Активирует указанный идентификатор языкового стандарта ввода для всего процесса и отправляет сообщение WM_INPUTLANGCHANGE в текущее окно фокуса или активного потока. Как правило, LoadKeyboardLayout активирует входной идентификатор языкового стандарта только для текущего потока.
начиная с Windows 8: этот флаг не используется. LoadKeyboardLayout всегда активирует входной идентификатор языкового стандарта для всей системы, если текущий процесс владеет окном с фокусом клавиатуры. |
|
Этот флаг не поддерживается. Вместо этого используйте функцию UnloadKeyboardLayout. |
Возвращаемое значение
Тип: HKL
Если функция выполнена успешно, возвращаемое значение является входным идентификатором языкового стандарта, соответствующим имени, указанному в pwszKLID. Если языковой стандарт не соответствует, возвращаемое значение является языком по умолчанию системы.
Если функция завершается ошибкой, возвращаемое значение равно NULL. Это может произойти, если библиотека макета загружается из каталога приложения.
Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Идентификатор языкового стандарта ввода — это более широкая концепция, чем раскладка клавиатуры, так как она также может охватывать преобразователь речи к тексту, редактор метода ввода (IME) или любую другую форму ввода.
Приложение может и обычно загружает идентификатор языкового стандарта по умолчанию или IME для языка и может сделать это, указав только строковую версию идентификатора языка. Если приложение хочет загрузить определенный языковой стандарт или IME, оно должно прочитать реестр, чтобы определить определенный идентификатор входного языкового стандарта для передачи в LoadKeyboardLayout. В этом случае запрос на активацию идентификатора языкового стандарта по умолчанию для языкового стандарта активирует первый соответствующий. Необходимо активировать определенный IME с помощью явного идентификатора языкового стандарта ввода, возвращенного из GetKeyboardLayout или LoadKeyboardLayout.
до Windows 8: эта функция влияет только на макет текущего процесса или потока.
начиная с Windows 8: эта функция влияет на макет всей системы.
Заметка
Заголовок winuser.h определяет LoadKeyboardLayout как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | winuser.h (включая Windows.h) |
библиотеки |
User32.lib |
DLL | User32.dll |
См. также
концептуальные
другие ресурсы
Справочник