:: Visual Foxpro, Foxpro for DOS
Глюк с переключением раскладки
Бураков Сергей
Автор

Сообщений: 280
Откуда: Calgary
Дата регистрации: 07.02.2005
Нашел тут на форуме процедурку для переключения раскладки:

PARAMETERS code
DECLARE INTEGER LoadKeyboardLayout IN Win32API String cKLID, Integer nFlags

#DEFINE KLF_ACTIVATE 1


=LoadKeyboardLayout(code, KLF_ACTIVATE)
RETURN
Если обращаюсь к ней с параметром '00000419', переключает на русский.
Решил вставить обращение к ней в WHEN комбобокса.
Так раскладка, даже если была русской, становится английской для формы(AS TOP-LEVEL).
Проверяю на текстбоксе в этой же форме. Если обращение из WHEN убираю, на английский
автоматом переключаться перестает.
Ratings: 0 negative/0 positive
Re: Глюк с переключением раскладки
borman

Сообщений: 11046
Откуда: Москва
Дата регистрации: 29.07.2004
код покажи....




------------------
Многие вещи нам непонятны не потому, что наши понятия слабы, а потому, что сии вещи не входят в круг наших понятий.
Ratings: 0 negative/0 positive
Re: Глюк с переключением раскладки
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
Вот это читал?

Как переключиться на нужную раскладку клавиатуры

Обрати внимание, что именно делает функция LoadKeyboardLayout. В конце статьи дано вкратце назначение функции.
Ratings: 0 negative/0 positive
Re: Глюк с переключением раскладки
Бураков Сергей
Автор

Сообщений: 280
Откуда: Calgary
Дата регистрации: 07.02.2005
Действительно, заменил мою процедуру на:

DECLARE INTEGER ActivateKeyboardLayout IN Win32API Integer, Integer
lnNeedKeyboard =0x0419
ActivateKeyboardLayout(lnNeedKeyboard,0)


Извини, Владимир, но код в приведенном примере мне показался несколько избыточным.
Большую часть его составляет преобразование определенных нами же констант из одного вида в другой.
К тому же непонятно, зачем проверять, не активизирована ли уже русская раскладка. Проверка, думаю, займет столько же времени и ресурсов, что и сама активизация. Ну, а что касается загрузки шрифта, то он всегда загружен.
и переключение стало работать
Но я так и не понял, почему предыдущая моя процедура с LoadKeyboardLayout работала при запуске из командного окна и не работает в комбобоксе.
Но, в любом случае, спасибо за подсказку. Без нее я бы еще сутки бился.
Ratings: 0 negative/0 positive
Re: Глюк с переключением раскладки
Владимир Максимов

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

Цитата:
Большую часть его составляет преобразование определенных нами же констант из одного вида в другой.
Неправда Ваша. Преобразование констант происходит только один раз именно для функции LoadKeyboardLayout, поскольку для нее надо передать не число (определенные константы), а символьную строку этого же самого числа в 16-ричной системе.

Цитата:
К тому же непонятно, зачем проверять, не активизирована ли уже русская раскладка.
Это "стандартная" логика любой настройки. Прежде чем ее выполнять следует убедиться, а надо ли ее вообще выполнять? Возможно, уже есть требуемая настройка.

Цитата:
Проверка, думаю, займет столько же времени и ресурсов, что и сама активизация.
Возможно. Но ту важен сам принцип. Пичем он себя вполне оправдывает, если использовать код полностью.

Цитата:
Ну, а что касается загрузки шрифта, то он всегда загружен и переключение стало работать
Это Вы сейчас так говорите. Но если уж Вы берете на себя труд установить определенную раскладку клавиатуры, то следует убедиться, что такая раскладка существует. Я могу с ходу придумать парочку ситуаций, когда нужной раскладки не окажется.

Цитата:
Но я так и не понял, почему предыдущая моя процедура с LoadKeyboardLayout работала при запуске из командного окна и не работает в комбобоксе.
А для этого надо почитать описание работы собственно функции LoadKeyboardLayout в разных операционных системах

LoadKeyboardLayout Function

Обратите внимание на комментарий к работе этой функции в Windows 95/98/Me

PS: Еще раз повторю - автоматическое изменение системных настроек (в данном случае раскладки клаиватуры) - крайне неблагодарное занятие. Следует очень тщательно подумать на тему "а оно нам надо?" прежде чем делать такое. Я сильно подозреваю, что Вам придется впоследствии выбросить этот автоматизм.
Ratings: 0 negative/0 positive


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

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

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