Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

VkKeyScan работает только для латинских символов   Найти похожие ветки 

 
Mr tray   (2006-05-20 00:33) [0]

VkKeyScan работает только для латинских символов. нужно ли делать транслитерацую, чтобы узнать виртуальный код клавиши с какой то русской буквой? или существует готовая функция?


 
begin...end ©   (2006-05-20 10:18) [1]

> Mr tray   (20.05.06 00:33)

> VkKeyScan работает только для латинских символов.

Вы ошибаетесь. Она работает для любых символов и возвращает виртуальный код клавиши в соответствии с текущей раскладкой клавиатуры. Если нужно получать код не для текущей раскладки, а указывать её явно, используйте VkKeyScanEx.


 
Mr tray   (2006-05-20 16:12) [2]

слушайте. что то у меня не выходит. использую LoadKeyboardLayout.
c:="s";
h:=LoadKeyboardLayout("00000409",KLF_ACTIVATE);{активируется US English}
c:=chr(vkkeyscanex(c,h));
получаем c="s". Но при KLF_ACTIVATE активируется указанная мною раскладка, чего мне не нужно. Мне надо получить только хендл раскладки. А при всех остальных флагах с="ы". можно ли, не активируя раскладку, получить её хэндл?


 
Mr tray   (2006-05-20 16:36) [3]


> получаем c="s"

извините.
код вот такой
c:="s";
h:=LoadKeyboardLayout("00000409",KLF_ACTIVATE);{активируется US English}
i:=vkkeyscanex(c,h);
получаем с = код клавиши S (ы)


 
Mr tray   (2006-05-20 16:36) [4]


> с = код клавиши S (ы)


i = код клавиши S (ы)


 
begin...end ©   (2006-05-20 16:45) [5]

> Mr tray   (20.05.06 16:12) [2]

> Но при KLF_ACTIVATE активируется указанная мною раскладка,
> чего мне не нужно.

Тогда почему Вы указываете KLF_ACTIVATE?

У меня при выполнении кода VkKeyScanEx("s", LoadKeyboardLayout("00000409", 0)) ничего не активируется, и возвращается код "S".


 
Mr tray   (2006-05-20 16:55) [6]

а если я посылаю код клавиши S (ы) на окно, у которого раскладка Ru, то у него напечатается "ы", а если En - то "s" ?


 
Mr tray   (2006-05-20 16:56) [7]

то есть посылаю WM_KEYDOWN


 
begin...end ©   (2006-05-20 19:29) [8]

> Mr tray   (20.05.06 16:55) [6]
> Mr tray   (20.05.06 16:56) [7]

Если Вы посылаете окну WM_KEYDOWN, то ему и придёт WM_KEYDOWN -- с виртуальным кодом клавиши, который был указан. "Напечатает" ли окно что-нибудь в ответ -- это его (окна), сугубо личное дело. Например, стандартное поле ввода (EDIT) ничего не напечатает.

Если Вы посылаете окну WM_KEYDOWN асинхронно (через PostMessage), то ему, кроме WM_KEYDOWN, придёт потом ещё и WM_CHAR, сгенерированное вызовом TranslateMessage на основе WM_KEYDOWN (если, конечно, в цикле обработки сообщений потока, которому принадлежит окно, есть вызов TranslateMessage). То, с каким кодом символа это WM_CHAR придёт -- да, зависит от раскладки клавиатуры  потока во время исполнения TranslateMessage. Как реагировать на WM_CHAR -- опять решает само окно (в своей оконной процедуре). Оно может напечатать этот символ (как это делает стандартный EDIT), может напечатать какой-нибудь другой символ, а может и ничего не напечатать.


 
Mr tray   (2006-05-20 21:11) [9]

спасибо



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.066 c
3-1144910659
Kley
2006-04-13 10:44
2006.06.04
форматирование строки


15-1147087612
Некто_
2006-05-08 15:26
2006.06.04
Аналог TryStrToDate в php


2-1147852228
dest81
2006-05-17 11:50
2006.06.04
Задержка меньше 1 мс


2-1147761317
DimonS
2006-05-16 10:35
2006.06.04
SQL+Sum()


2-1148119916
KLAUS
2006-05-20 14:11
2006.06.04
Сравнить две строки!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский