igork |
Отправлено: 03.02.2005, 22:54 |
|
Не зарегистрирован
|
Пожалуйста, подскажите как корректно отобразить строку Unicode (wchar_t*) содержащюю символы из многих языков
|
|
Konstantine |
Отправлено: 03.02.2005, 23:16 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
что значит "отобразить"? если в ShowMessage, то: CODE | wchar_t *uni_str; // Ваша строка
AnsiString str(uni_str); // Переводим в AnsiString
ShowMessage(str); // Выводим
|
корректность всех символов многих языков не гарантирую... т.к. на 1 символ отводится 1 байт — это 256 разных комбинаций... при этом некоторые из них зарезервированы и т.д..., но русский и английский работает нормально
|
|
igork |
Отправлено: 04.02.2005, 01:02 |
|
Не зарегистрирован
|
В том-то и дело, что корректно отображаются только русские и английские символы (русские из-за локализации, а английские по определению),
а вот все остальные при преобразовании в AnsiString заменяются (по умолчанию на символ '?').
В принципе, мне уже удалось правильно вывести все символы на Canvas с помощью функции
BOOL TextOut(
HDC hdc, // handle of device context
int nXStart, // x-coordinate of starting position
int nYStart, // y-coordinate of starting position
LPCTSTR lpString, // address of string
int cbString // number of characters in string
);
поскольку здесь нет преобразования в AnsiString.
Причем для отображения подходит далеко не каждый шрифт (я подобрал "Lucida Sans Unicode", хотя он не соблюдает необходимую мне моноширинность)
Но мне было бы удобнее, если бы получилось вывести, например, в RichEdit или какой-либо другой подобный компонент, поскольку на Canvas придется все прописывать руками (прокрутку, resize, движение курсора по тексту и т.д.) |
|
|