Функция
LoadKeyboardLayout загружает новый идентификатор языка ввода данных (прежде называемой раскладкой символов на клавиатуре) в систему. Одновременно могут быть загруженными несколько идентификаторов языка ввода, но в одно о тоже время активным может быть только один на процесс. Загрузка нескольких идентификаторов языка ввода делает возможным быстро переключаться между ними.Синтаксис
HKL LoadKeyboardLayout( LPCTSTR pwszKLID, UINT Flags ); |
Параметры
pwszKLID
[in] Указывает на буфер, который определяет название идентификатора языка ввода. Это название является строкой, составленной из шестнадцатеричного значения Идентификатора языка (младшее слово) и идентификатора устройства (старшее слово). Например, Американский английский язык имеет идентификатор языка
0x0409, так что первичная Американо-английская раскладка имеет название "00000409". Варианты раскладки Американского английского языка, такие как раскладки Дворака, названы "00010409", "00020409" и так далее.Flags
[in] Определяет, как идентификатор языка ввода должен быть загружен. Этот параметр может быть одним из следующих значений:
Флажок |
Предназначение |
KLF_ACTIVATE |
Если заданный идентификатор языка ввода ещё не загружен, функция загружает и активизирует его для текущего потока. |
KLF_NOTELLSHELL |
Препятствует подключаемой процедуре фильтра ShellProc принимать код фильтра (hook) HSHELL_LANGUAGE, когда загружается новый идентификатор языка ввода . Это значение обычно используется тогда, когда прикладная программа загружает несколько идентификаторов языка ввода, один за другим. Применение этого значения, ко всем кроме последнего идентификатора языка ввода, задерживает обработку оболочки, пока не будут добавлены все идентификаторы. |
KLF_REORDER |
Перемещает заданный идентификатор языка ввода в начало списка идентификаторов языка, делая его активным для текущего потока. Это значение переупорядочивает список идентификаторов языка ввода, даже если не дается флажок KLF_ACTIVATE. |
KLF_REPLACELANG |
Windows 95/98/Me, Windows NT 4.0, and Windows 2000/XP: Если новый идентификатор языка ввода имеет тот же самый языковый идентификатор , как и текущий идентификатор, новый идентификатор заменяет текущий как идентификатор для этого языка. Если это значение не дается, а раскладки имеют те же самые идентификаторы языка, текущий идентификатор языка ввода не заменяется, а функция возвращает значение ПУСТО (NULL). |
KLF_SUBSTITUTE_OK |
Меняет заданный идентификатор языка ввода другой раскладкой, предпочитаемой пользователем. Система запускается с установленным этим флажком, и рекомендуется, чтобы ваше приложение всегда использовало этот флажок. Замена происходит только тогда, если ключ системного реестра HKEY_CURRENT_USER\Keyboard Layout\Substitutes явно определяет замену языка. Например, если ключ включает в себя значение названия "00000409" со значением "00010409", загрузка Американо-английской раскладки ("00000409") вынуждает загрузиться вместо неё раскладку США Английского языка Дворака ("00010409"). Система использует KLF_SUBSTITUTE_OK при начальной загрузке, и рекомендуется, чтобы все прикладные программы использовали это значение при загрузке идентификаторов языка ввода данных, чтобы гарантировать, что системой будет избран язык предпочитаемый пользователем. |
KLF_SETFORPROCESS | Windows 2000/XP: Этот флажок допустим только с KLF_ACTIVATE. Активизирует указанный идентификатор языка ввода данных для всего процесса и отправляет сообщение WM_INPUTLANGCHANGE с фокусом или активному окну текущего потока . Как правило, функция LoadKeyboardLayout активизирует идентификатор языка ввода данных только текущего потока. |
KLF_UNLOADPREVIOUS | Этот флажок не поддерживается. Вместо него используйте функцию UnloadKeyboardLayout. |
Возвращаемые значения
Если функция завершается успешно, возвращаемое значение - идентификатор языка ввода данных национального языка, согласованный с требуемым названием. Если соответствие не доступно ни с каким национальным языком, возвращаемое значение - ПУСТО (NULL). Чтобы получить дополнительные сведения об ошибке, вызовите функцию GetLastError.
Замечания
Эта функция воздействует только на раскладку клавиатуры текущего процесса или потока.
Идентификатор языка ввода данных - более широкое понятие чем раскладка клавиатуры, так как он может также включать в себя преобразователь речи в текст, Редактор Метода Ввода (IME), или любую другую форму ввода данных.
Прикладная программа может и должна, как правило загрузить заданную по умолчанию раскладку или IME для языка, а может сделать так при помощи определения только строковой версии идентификатора языка. Если прикладная программа хочет загрузить заданный язык или IME, она должна прочитать системный реестр, чтобы установить заданный идентификатор языка ввода данных, чтобы передать его в LoadKeyboardLayout. В этом случае, запрос активизирует заданный по умолчанию идентификатор языка ввода данных для языка, который приведет в действие одно из первых соответствий. Заданный IME должен быть активизирован, используя явно идентификатор языка ввода данных, возвращенный из функций GetKeyboardLayout, GetKeyboardLayoutList или LoadKeyboardLayout.
Windows 95/98/Me: Если идентификатор языка ввода данных должен быть загружен тем же самым языком как предварительно загруженный идентификатор языка ввода, а флажок KLF_REPLACELANG не установлен, вызов завершается ошибкой. Только один загруженный национальный язык может быть связан с языком системы. (Это приемлемо для нескольких IME, которые загружаются связанные с тем же самым языком).
Windows 95/98/Me: LoadKeyboardLayoutW поддерживается подпрограммой Microsoft Layer for Unicode (MSLU). Чтобы использовать подпрограмму, Вы должны добавить некоторые файлы к вашему приложению, как это определено в Microsoft Layer for Unicode для систем Windows 95/98/Me.
Смотри также
Обзор Ввод данных с клавиатуры, ActivateKeyboardLayout, GetKeyboardLayoutName, MAKELANGID, UnloadKeyboardLayout
Размещение и совместимость LoadKeyboardLayout |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |