:: Архив конференции по VFP до 2005 года
Раскладка клавиатуры
Альберт

Сообщений: 81
Дата регистрации: 10.10.2001
Подскажите пожалуйста, как средствами VFP переключать раскладку клавиатуры. С английского на русский.

С уважением, Альберт
Ratings: 0 negative/0 positive
Re: Раскладка клавиатуры
Hel!Riser

Сообщений: 10452
Откуда: Нижний Новгород
Дата регистрации: 11.03.2001
DECLARE INTEGER LoadKeyboardLayout IN Win32API String, Integer
=LoadKeyboardLayout("00000419", 1)




------------------
Осторожно - глисты!
Ratings: 0 negative/0 positive
Re: Раскладка клавиатуры
Альберт

Сообщений: 81
Дата регистрации: 10.10.2001
Спасибо. С русского на английский работает. А наоборот. Что означают параметры функции LoadKeyboardLayout

С уважением, Альберт
Ratings: 0 negative/0 positive
Re: Раскладка клавиатуры
Hel!Riser

Сообщений: 10452
Откуда: Нижний Новгород
Дата регистрации: 11.03.2001
набери ее в Поиске по форуму - найдешь ответы
ЗЫ =LoadKeyboardLayout("00000409", 1) на иглиш




------------------
Осторожно - глисты!
Ratings: 0 negative/0 positive
Re: Раскладка клавиатуры
Владимир Максимов
Автор

Сообщений: 14094
Откуда: Москва
Дата регистрации: 02.09.2000
Вопрос добавлен в FAQ

forum.foxclub.ru
Ratings: 0 negative/0 positive
Re: Раскладка клавиатуры
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
*
* Переключение на РУССКИЙ
*
FUNCTION ActiKeybrdRus
LOCAL lpr
DECLARE SHORT GetKeyboardLayoutName IN user32.dll STRING @lpR
DECLARE SHORT ActivateKeyboardLayout IN user32.dll INTEGER HKL , INTEGER flags
lpr=' '
GetKeyboardLayoutName(@lpr)
if not '419' $lpr
ActivateKeyboardLayout(1,0)
endif
CLEAR DLLS "GetKeyboardLayoutName", "ActivateKeyboardLayout"
RETURN
ENDFUNC
*
* Переключение на АНГЛИЙСКИЙ
*
FUNCTION ActiKeybrdUS
LOCAL lpr
DECLARE SHORT GetKeyboardLayoutName IN user32.dll STRING @lpR
DECLARE SHORT ActivateKeyboardLayout IN user32.dll INTEGER HKL , INTEGER flags
lpr=' '
GetKeyboardLayoutName(@lpr)
if not '409' $lpr
ActivateKeyboardLayout(1,0)
endif
CLEAR DLLS "GetKeyboardLayoutName", "ActivateKeyboardLayout"
RETURN
ENDFUNC




------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Раскладка клавиатуры
Владимир Максимов
Автор

Сообщений: 14094
Откуда: Москва
Дата регистрации: 02.09.2000
Игорь, ты не совсем корректно организовал переключение. Твоя логика примерно следующая:

Если текущая раскладка клавиатуры отлична от нужной, то переключиться на следующую раскладку в созданном списке раскладок.

Откуда такая уверенность, что у пользователя только 2 раскладки? Причем именно "русский/английский"? Я, например, встречал и тройную раскладку "русский/английский/немецкий". Возможны и более сложные варианты.

Ну, и по мелочи, способ проверки текущей раскладки

if not '419' $lpr

некорректен. Надо проверять именно младшее слово, т.е. последние 4 символа. Т.е. примерно так:

lpr = space(8)
GetKeyboardLayoutName(@lpr)
IF RIGHT(m.lpr,4)<>"0419"
* Не русская раскладка
ENDIF
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 5 (Гостей: 5)

© 2000-2024 Fox Club 
Яндекс.Метрика