Win32 API
Написано на 15 февруари 2007 г. Публикувано в Win32
СЪДЪРЖАНИЕ
Функция LoadKeyboardLayout
Изпълнението наLoadKeyboardLayout вWindows 95 иWindows NT се различава значително. За да подчертае тези разлики, тази страница с ръководство първо представя неговата цялостна реализация в средата наWindows 95, според версията наWindows NT.
Windows 95:
ФункциятаLoadKeyboardLayout зарежда нова клавиатурна подредба в системата. Няколко клавиатурни подредби могат да бъдат заредени едновременно, но само една на процес се активира едновременно. Зареждането на множество клавиатурни подредби прави възможно бързото превключване между тях.
ПараметриpwszKLID Посочва буфер, който указва името на клавиатурната подредба. Това име е низ, съставен от шестнадесетичната стойност на идентификатора на основния език (ниска дума) и идентификатора на устройството (висока дума). Например американският английски има езиков идентификатор 0x0409, така че основното оформление на американски английски е "00000409". Вариантите на оформление на американски английски като оформлението на Dvorak се наричат "00010409", "00020409" и така нататък. Списъкът с първични и вторични езикови идентификатори, които съставляват общия езиков идентификатор, се поддържа от макросаMAKELANGID.Флагове Определя как трябва да се зарежда клавиатурната подредба. Този параметър може да бъде една от следните стойности:
- KLF_ACTIVATE - Ако даденото оформление все още не е заредено, функцията зарежда и активира оформлениетоза текущата нишка, вмъкване на оформлението в началото на списъка с клавиатурни подредби, преди активното предишно оформление. Ако оформление вече е заредено и не е дадена стойност KLF_REORDER, функцията просто завърта списъка с клавиатурни подредби, правейки следващата подредба активна.
- KLF_NOTELLSHELL - Предотвратява куката на ShellProc да приеме кода на куката HSHELL_LANGUAGE, когато се зарежда ново оформление. Тази стойност обикновено се използва, когато дадено приложение зарежда множество оформления едно след друго. Прилагането на тази стойност към всички оформления освен последното забавя обработката на обвивката, докато не бъдат добавени всички оформления.
- KLF_REORDER - Премества дадената подредба в началото на списъка с подредби на клавиатурата, което я прави активна за текущата нишка. Тази стойност пренарежда списъка с клавиатурни подредби, дори ако не е даден KLF_ACTIVATE
- KLF_REPLACELANG - Ако новото оформление има същия езиков идентификатор като текущото оформление, новото оформление замества текущото като оформление за този език. Ако тази стойност не е дадена и оформленията имат еднакви езикови идентификатори, текущото оформление не се заменя и функцията връща NULL.
- KLF_SUBSTITUTE_OK - Променя дадената клавиатурна подредба на друга, предпочитана от потребителя. Заместване става само ако регистрационният ключ HKEY_CURRENT_USER\Keyboard Layout\Substitutes изрично указва замяна на оформлението. Например, ако ключът включва стойност на име „00000409“ със стойност „00010409“, зареждането на оформлението на американски английски („00000409“) кара вместо това да се зареди оформлението на американски английски Дворак.("00010409"). Системата използва KLF_SUBSTITUTE_OK при зареждане и се препоръчва всички приложения също да използват тази стойност.
Върнати стойности Ако функцията успее, върнатата стойност е манипулатор на клавиатурната подредба, съответстваща на заявеното име, или NULL (NULL ), ако няма налична съответстваща клавиатура.
Забележки Ако оформлението е заредено със същия език, както е бил зареден преди това, и флагътKLF_REPLACELANG не е зададен, извикването на функцията е неуспешно. Само едно заредено оформление може да бъде свързано с даден език. (Това е приемливо за много IME, които се зареждат, свързани със същия език.) Приложението може и трябва, обикновено е желателно, да зареди оформлението по подразбиране или IME за език или може да го направи, като посочи само низова версия на езиковия идентификатор. Ако дадено приложение иска да зареди дадено оформление или IME, то трябва да прочете системния регистър, за да зададе дадения ID на оформлението, за да го предаде наLoadKeyboardLayout. В този случай заявката извиква дескриптора на клавиатурната подредба по подразбиране за региона, което ще задейства едно от първите съвпадения. Посоченият IME трябва да бъде активиран с помощта на явен манипулатор на клавиатурната подредба, върнат от една от функциитеGetKeyboardLayout,GetKeyboardLayoutList илиLoadKeyboardLayout.
Вижте същоActivateKeyboardLayout,GetKeyboardLayout,GetKeyboardLayoutName,MAKELANGID,UnloadKeyboardLayout
Windows NT:
ФункцияLoadKeyboardLayout зарежда клавиатурната подредба.
ПараметриpwszKLID Посочва буфер, който указва името на клавиатурната подредба. Името трябва да бъде получено от шестнадесетичната стойност на езиковия идентификатор, съответстващ на оформлението. Например американският английски има езиков идентификатор 0x0409, така че основното оформление на американски английски се нарича "00000409". Варианти на оформлението на американски английски, като оформлението на Dvorak, се наричат "00010409", "00020409" и т.н. Списъкът с идентификатори на основни езици и поднабор на езикови идентификатори, които съставляват езиковия идентификатор, се поддържа от макросаMAKELANGID.Флагове Задава как да се зарежда клавиатурната подредба. Този параметър може да бъде една от следните стойности:
- KLF_ACTIVATE - Функцията зарежда оформлението, ако вече не е заредено и го активира. Тази стойност позволява оформление за системата като цяло, а не само за извикващата нишка.
- KLF_REORDER - Този флаг има значение само ако флагът KLF_ACTIVATE е зададен и оформлението вече е заредено. Ако тези условия са изпълнени и битът KLF_REORDER е зададен, функцията премахва определеното оформление от позицията му в кръговия списък на заредената система за оформление и го премества в началото на списъка като активно оформление.Ако битът KLF_ACTIVATE е зададен и оформлението е заредено, но битът KLF_REORDER не е зададен, функцията просто завърта кръговия списък от заредени оформления в системата. кръгов списък с клавиатурни подредби преди активната предишна подредба.
- KLF_SUBSTITUTE_OK - Посоченото оформление търси конфигурацията на потребителя (в системния регистър под ключа HKEY_CURRENT_USER\Keyboard Layout\Substitutes) за предпочитаното заместващо оформление на потребителя. Например, ако тази секция има стойност на заглавие "00000409", равна на "00010409", оформлението на американски английски ("00000409") се зарежда с набор от флагове KLF_SUBSTITUTE_OK, което ще доведе до зареждането на оформлението на американски английски Dvorak ("00010409").
- KLF_UNLOADPREVIOUS - Ако флагът KLF_ACTIVATE е зададен и макетът е успешно зареден и активиран, функцията разтоварва активния предишен макет. В противен случай функцията игнорира този флаг.
Върнати стойности Ако функцията успее, върнатата стойност е манипулатор на клавиатурната подредба. Ако функцията е неуспешна, върнатата стойност е NULL (NULL ). За да получите разширена информация за грешка, извикайтеGetLastError.
Бележки Няколко клавиатурни подредби могат да бъдат заредени едновременно, но само една може да бъде активна. Зареждането на множество клавиатурни подредби прави възможно бързото превключване между тях.
Вижте същоActivateKeyboardLayout,GetKeyboardLayoutName,UnloadKeyboardLayout
LoadKeyboardLayout Поставяне и съвместимост