Переключения языка ввода
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Переключения языка ввода
Подскажите, как из программы переключать язык ввода! Я запутался с API функциями.
- WadimZapara
- Активист
- Сообщения: 181
- Зарегистрирован: 11 Июнь 2008, 12:11
- Откуда: Тамбов
Re: Переключения языка ввода
пример:
Код: Выделить всё
TEST PROGRAM
MAP
MODULE('Windows API')
LoadKeyboardLayoutA Function(*CString,UNSIGNED),Unsigned,PASCAL,RAW,DLL
ActivateKeyboardLayout Function(Unsigned,UNSIGNED),Unsigned,PASCAL,RAW,PROC,DLL
END
RusLat PROCEDURE (<BYTE Lat1>)
END
cstr CSTRING(101)
WIN WINDOW(,,100,100)
TEXT,AT(1,1,50,50),VSCROLL,Use(cstr)
END
Code
OPEN(WIN)
ACCEPT
CASE EVENT()
OF EVENT:OpenWindow
RusLat(0)
END !CASE
END !END ACCEPT
CLOSE(WIN)
Message(CSTR, 'Значение переменной поля TEXT', ICON:Asterisk)
!=========================================================
RusLat PROCEDURE(<Byte Lat_1>)
! НАЗНАЧЕНИЕ: Программное переключение клавиатуры на русский / латинский
! Параметр Lat_1: 1 - переключить на латынь,
! 0 - переключить на русский.
! При вызове без параметра: двоичный переключатель - русский / латинский.
! Если вызывается в приложении впервые и без параметра - переключает на русский.
! СУЩЕСТВЕННОЕ ЗАМЕЧАНИЕ:
! Вызывать процедуру нужно внутри цикла ACCEPT, иначе функциональность нарушается.
!!!!!!!!!!!!!!!!!! ДЛЯ ПЕРЕКЛЮЧЕНИЯ КЛАВЫ !!!!!!!!!!!!!!!!!
KB_ACTIVATE EQUATE(00000001h)
_lat Unsigned, Static
_rus Unsigned, Static
_rlBuff &CString
RusLat Byte, Static !0=Lat
xrl UnSigned, Auto
CODE
If ~ _rus Then
_rlBuff &= New(CString(50)) ! создать место под переменную
_rlBuff = '00000409'; _lat = LoadKeyboardLayoutA(_rlBuff, KB_ACTIVATE)
_rlBuff = '00000419'; _rus = LoadKeyboardLayoutA(_rlBuff, KB_ACTIVATE)
Dispose(_rlBuff) ! освободить пространство
End
If ~ Omitted(1) Then RusLat = Lat_1.
xrl = Choose(RusLat, _lat, _rus)
ActivateKeyboardLayout(xrl, KB_ACTIVATE)
RusLat = BXOR(RusLat, 1)
!=========================================================
Компьютер имеет то преимущество перед мозгом, что им пользуются...