Функция LoadKeyboardLayout 


Функция 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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz