![]() |
|
|
![]()
|
|
| larryspb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.4.2010 Репутация: нет Всего: нет |
Доброго времени суток. У меня возникла следующая проблема.
Я использую метод SetCaretPos() для установки позиции каретки в окне ввода. Текст выводится при помощи метода TextOutW(). При этом, координата вывода каретки X высчитывается на основе длины текста следующим образом:
При вводе некоторых символов, например z,s - каретка постепенно(с ростом числа символов) "убегает" вправо от текста f,t - каретка убегает "влево" от конца текста. Я проверил, переменная CursorPos высчитывается верно. И что характерно, например, при использовании символа 'x' в строке ввода каретка ведет себя правильно. А при вводе символа 'z' - "убегает". Хотя длины этих символов ОДИНАКОВЫ. Никто не может подсказать, в чем здесь может быть ошибка? |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
larryspb, почему если ты пишешь в Билдере используешь WinApi? Есть удобные билдеровские функции. На счет размера x и z - надо посмотреть, какой у тебя шрифт еще установлен в самом контроле.
Если ты в 6м пишешь, скинь мне на e-mail, посмотрю весь код. Так сложно сказать. |
|||
|
||||
| larryspb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.4.2010 Репутация: нет Всего: нет |
Какие именно функции можно использовать в билдере для определения длины строки в пикселяx? Мне нужно, что бы эта функция поддерживала работу с Unicode строками. Т.е. могла работать, например, со строками, введенными на арабском языке. |
|||
|
||||
| ИванМ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
Canvas::TextWidth
Это зависит от версии Билдера. В современных должно работать. |
||||
|
|||||
| larryspb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.4.2010 Репутация: нет Всего: нет |
К сожалению, только 2006 билдер. И тут поддержка только AnsiString, что меня никоим образом не устраивает. Необходима поддержка WideString. Это сообщение отредактировал(а) larryspb - 19.4.2010, 09:16 |
|||
|
||||
| larryspb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.4.2010 Репутация: нет Всего: нет |
Проблема решена при помощи функции GetTextExtentExPointW();
|
|||
|
||||
| DCamer |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
слабо новую версию скачать? --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |