Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Библиотеки

Библиотеки Сторонние библиотеки для Blitz

Ответ
 
Опции темы
Старый 22.09.2008, 00:59   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Переключение раскладки

;KeyLayoutChanger
;============================
;Взглядом Свиборга приветствуя коллег,
;Импер и Джокер представляют чейнджилку раскладок

;impersonalis (icq 11-999-51-51)
;SBJoker
;============================

;*.decls:
;============================
; .lib "user32.dll"
;Api_GetKeyboardLayoutName%(pwszKLID*):"GetKeyboardLayoutNameA"
;Api_LoadKeyboardLayout%(pwszKLID$,flags%):"LoadKeyboardLayoutA"
;============================

;parameters For api's
;
Const KeyLayoutChanger_KL_NAMELENGTH% = 9-1                      ;length of the keyboardbuffer
Const KeyLayoutChanger_KLF_ACTIVATE% = 1                 	    ;activate the layout
;the language constants
Dim KeyLayoutChanger_Languages$(5,1)
KeyLayoutChanger_Languages(0,0)=5

KeyLayoutChanger_Languages(1,0)="NL_STD"
KeyLayoutChanger_Languages(1,1)="00000413"

KeyLayoutChanger_Languages(2,0)="EN_US"
KeyLayoutChanger_Languages(2,1)="00000409"

KeyLayoutChanger_Languages(3,0)="DU_STD"
KeyLayoutChanger_Languages(3,1)="00000407"

KeyLayoutChanger_Languages(4,0)="FR_STD"
KeyLayoutChanger_Languages(4,1)="0000040C"

KeyLayoutChanger_Languages(5,0)="RU_RUS"
KeyLayoutChanger_Languages(5,1)="00000419"

Global KeyLayoutChanger_Languages_DEFAULT$

;============================
Function KeyLayoutChanger_SaveDefault()
	KeyLayoutChanger_Languages_DEFAULT=KeyLayoutChanger_GetKbLayout$()
End Function

Function KeyLayoutChanger_GetCode1$(KeyLayoutName$)
	;RU_RUS -> 00000419
	If KeyLayoutName="DEFAULT"
		Return KeyLayoutChanger_Languages_DEFAULT
	EndIf
	For i=1 To KeyLayoutChanger_Languages(0,0)
		If KeyLayoutChanger_Languages(i,0)=KeyLayoutName
			Return KeyLayoutChanger_Languages(i,1)
		EndIf
	Next
	Return "-1"
End Function

Function KeyLayoutChanger_GetCode2$(KeyLayoutCode$)
	;00000419 -> RU_RUS
	For i=1 To KeyLayoutChanger_Languages(0,0)
		If KeyLayoutChanger_Languages(i,1)=KeyLayoutCode
			Return KeyLayoutChanger_Languages(i,0)
		EndIf
	Next
	Return "-1"
End Function

Function KeyLayoutChanger_GetKbLayout$()
	Local strLocId=CreateBank(KeyLayoutChanger_KL_NAMELENGTH)
	Api_GetKeyboardLayoutName(strLocId)
	Local strLocId_StrMir$=""
	For i=0 To BankSize(strLocId)-1
		strLocId_StrMir=strLocId_StrMir+Chr(PeekByte(strLocId,i))
	Next
	FreeBank(strLocId)
	Return strLocId_StrMir
End Function

Function KeyLayoutChanger_SetKbLayout%(strLocaleId$)
	;Changes the KeyboardLayout
	;Returns True when the KeyboardLayout was adjusted properly, False otherwise
	;If the KeyboardLayout isn't installed, this Function will install it For you

	;create a buffer
  	Local strLocId=CreateBank(KeyLayoutChanger_KL_NAMELENGTH)
	Local strLocId_StrMir$
	Local strLocId_IntMir%
  	;retrieve the current KeyboardLayout
  	Api_GetKeyboardLayoutName(strLocId)
	strLocId_StrMir$=""
	For i=0 To BankSize(strLocId)-1
		strLocId_StrMir=strLocId_StrMir+Chr(PeekByte(strLocId,i))
	Next
 	;Check whether the current KeyboardLayout And the
  	;New one are the same
	If strLocId_StrMir = strLocaleId
		;If they're the same, we Return immediately
		FreeBank(strLocId)
		Return True
	Else
		;load And activate the layout For the current thread
    		strLocId_IntMir = Api_LoadKeyboardLayout(strLocaleId, KeyLayoutChanger_KLF_ACTIVATE)
		If strLocId_IntMir=0 ;returns Null when it fails
			FreeBank(strLocId)
			Return False
		Else ;check again
			;retrieve the current layout
			Api_GetKeyboardLayoutName(strLocId)
			strLocId_StrMir$=""
			For i=0 To BankSize(strLocId)-1
				strLocId_StrMir=strLocId_StrMir+Chr(PeekByte(strLocId,i))
			Next
			If strLocId = strLocaleId
				FreeBank(strLocId)
				Return True
			Else
				FreeBank(strLocId)
				Return False
			End If
		End If
	End If
End Function

;demo code:
WaitKey()
KeyLayoutChanger_SaveDefault()
KeyLayoutChanger_SetKbLayout(KeyLayoutChanger_GetCode1("EN_US"))
Print KeyLayoutChanger_GetCode2$(KeyLayoutChanger_GetKbLayout())
WaitKey()
End
Варнинг: необходимы следующие деклсы
.lib "user32.dll"
Api_GetKeyboardLayoutName%(pwszKLID*):"GetKeyboard LayoutNameA"
Api_LoadKeyboardLayout%(pwszKLID$,flags%):"LoadKey boardLayoutA"
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?

Последний раз редактировалось impersonalis, 22.09.2008 в 01:51.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
ABTOMAT (22.09.2008), h1dd3n (21.09.2011), H@NON (22.09.2008), tormoz (22.09.2008)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как переключить язык? sono Основной форум 9 23.12.2009 01:06
Проблемы с переключением анимаций Belamore 3D-программирование 12 09.08.2007 13:39
Система переключения анимаций Vyacheslav 3D-программирование 0 16.01.2007 16:56
COM-порт: не переключается скорость ARV Основной форум 1 06.01.2007 04:34
Переключение оружия smaller 3D-программирование 9 06.07.2006 01:06


Часовой пояс GMT +4, время: 21:22.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com