Несколько раскладок клавиатуры

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4615
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Несколько раскладок клавиатуры

Сообщение finsoftrz »

Вопрос тут возник. В архивах есть пример переключения ru/lat, используя ActivateKeyBoardLayout(1,0). Я им давно пользуюсь.
Если раскладок больше 2, то вроде надо использовать GetKeyboardLayoutList для получения их списка, а затем с ним работать. Но примеров на кларионе что-то не гуглится. А на сях и делфи как-то трудно понять. Никто не делал такое? Как обход можно перебирать раскладки ActivateKeyBoardLayout в цикле, но это как-то не совсем правильно выглядит.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4615
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Несколько раскладок клавиатуры

Сообщение finsoftrz »

Вот такой код работает при нескольких раскладка. В параметре KBDLayout передается кодовое значение раскладки (например, "00000409" для английской).

Код: Выделить всё

SwitchKBD            PROCEDURE (STRING KBDLayout)
NewKL  UNSIGNED
CurKL  CSTRING(20)

  CODE 
         Err# = GetKeyboardLayoutNameA(CurKL)
         IF Err#<>0 and CurKL <> KBDLayout
            CurKL = KBDLayout
            LoadKeyboardLayoutA(CurKL,1)
            NewKL = ActivateKeyBoardLayout(CurKL,0)            
         END
Прототипы.

Код: Выделить всё

  MODULE('Windows.lib')
      ActivateKeyboardLayout(UNSIGNED,UNSIGNED),UNSIGNED,PASCAL
      GetKeyboardLayoutNameA(*CSTRING),SIGNED,PASCAL,RAW
      LoadKeyboardLayoutA(*CSTRING,SIGNED),PASCAL,RAW
   end
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4982
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Несколько раскладок клавиатуры

Сообщение kreator »

Прототипы в стандартном 'WINAPI'.
We are hard at work… for you. :)
Ответить