Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нужен контрол для ввода текста с Unicode символами

4.4K
13 марта 2006 года
blind rain
66 / / 20.07.2004
Здравствуйте уважаемые,
я по поиску прошелся вроде бы был на эту тему пост:

http://forum.codenet.ru/showthread.php?s=&threadid=18138
Но конкретного ответа к нему нет.

Проблема:
окружение:
в Win XP устанавливается дополнительный язык -Казахский, у которого нет собственной кодировки, и до XP исхитрялись cp1251 + спецшрифт, заменяющий образы редкоиспользуемых символов на 9 специфичных для языка). XP эту проблему решает через юникод-символы для казахского языка.

непосредственно проблема:
Пользователи хотят вводить некоторый текст в форме VB приложения на казахском языке. Стандартный Text рисует натуральные ?(вопросы с кодом 63) вместо нужных символов.
Нашел в и-нете упоминание, что RichTextBox понимает unicode. Действительно, если вставляешь из клипборда(ctrl+v) в него юникод строку - отображает нормально, и в .TextRTF двухбайтовый код нужных символов видно. Однако с клавиатуры эти символы вводятся некорректно - опять вопросы.

Есть идея - попробовать перехватывать нажатие клавиш и самому RTF-ом писать, но даже в этом случае через свойство .Text возвращаются вопросы - короче геморрой.
Может у кого-нибудь еще есть идеи как решить эту проблему или может кто посоветует ActiveX контрол какой-нибудь?
4.4K
17 марта 2006 года
blind rain
66 / / 20.07.2004
Для тех кто будет эту же конюшню чистить:
Время у меня было 2 дня, посему нельзя сказать что проблему решил - скорее муляж поставил:
На одном индусском сайте нашел такую-же проблему, пост примерно от того же времени (неверное мой ментальный двойник :) ) - умные гуру-индусы объяснили почему лажа такая происходит, пару слов насоветовали и послали на сайт http://www.cyberactivex.com/UnicodeTutorialVb.htm

В общем, прикрутил я unicode-aware TextEdit из Forms 2.0 Object Library, и написал тупой обработчик нажатий клавиш для блокировки кодов, которые Windows посылает в ansi-форму VB. Я мапировал в зависимости от KeyboardLayout эти коды в соответствующие Unicode-символы и записывал в свойство text.
Выглядит так - как будто работает :).

А проблема в том, что судя по всему VB регистрирует класс формы через Ansi версию функции RegisterClass (RegisterClassA), а значит IsWindowUnicode возвращает False и система сама мапирует Unicode коды в соответствующие Ansi коды перед посылкой форме сообщения.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог