?

Log in

wxWidgets
developers community
Как попроще вывести текст с индексами? 
15-04-2011 22:07
Mish
Добрый день!

Хочется как можно проще :) вывести что-то типа простенького HTML - например, строку вида

Результат расчета D<sub>i</sub> = 1.5

Ну, т.е. минимально - с индексами.

Static Text, понятно, не подходит. Пробовал wxHtmlWindow - вроде похоже на то, что мне надо, но не хочет русский выводить - сплошные кракозябры... Передавал ему строку типа

<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="windows-1251">
</head>
<body>
<font face="Arial"><center>Вычисление D<sub>0</sub></center></font>
</body>
</html>

все равно кракозябры - не понимает, что это windows-1251...

Как вообще проще всего решить эту проблему?

Заранее спасибо за советы!
Comments 
15-04-2011 19:18 (UTC)
передавать ему не win1251, а перекодировать в unicode?
16-04-2011 05:41 (UTC)
Это да, работает. Но - уже до фига написано в 1251, и перекодировать весь проект - мягко говоря, не для слабонервных :) (кстати, а тут есть какой-то способ попроще, чем связка MultiByteToWideChar + WideCharToMultiByte?)

В wxHtmlWindow можно еще поиграться с SetFont(), и указать явно кириллический Win-шрифт типа Arial Cyr - это срабатывает и при 1251.

Но я заодно хотел узнать, как люди вообще с таким справляются - типа индексов? У меня ощущение, что Html - это из пушки по воробьям. Подумывал об RtfTextCtrl - но с rtf я не знаком, в отличие от Html.
16-04-2011 12:51 (UTC)
не знаю как у вас, а у меня это unicode()
:)

хтмл вообще-то для этого и есть
он в первую очередь text markup language, а во вторую - уже всё остальное.
Либо ртф, да.

В примерах была работа с ртф вроде.
16-04-2011 16:00 (UTC)
Ну, по крайней мере греет, что я правильно выбрал способ :)

О конвертации... Ну, мне привычнее работать с простым и тупым редактором типа fte :), и я никак не соображу, как мне скрестить ужа с ежом, т.е. все файлы - в windows-1251, и режим wxWidgets - ANSI, но при этом получить нормальный wxHtmlWindow. Поправьте меня, если я неправ, но по-моему, это невозможно, т.к. сам wxWidgets при этом не unicode'ный.

Если перевести все в unicode, то надо с напильником проходиться по всем строкам, которые имеются в проекте, и как-то их преобразовывать в Unicode - как я понял, с wxMBConv, так?
16-04-2011 16:04 (UTC)
что-то никто из тех, кто использует wx для С++, не подтягивается, а я вам тут уже дальше не помощник

я просто ставлю wxPython и использую всё с юникодом (давно привык к семантике текст = [раскодированный] юникод, строка ansi = бинарник неясного содержания)
16-04-2011 16:10 (UTC)
Да и за то большое спасибо :)

Просто главное сомнение у меня было - не ерундой ли я занимаюсь и не просмотрел ли я что-то очевидное...
16-04-2011 16:14 (UTC)
использование первого пришедшего в голову решения - достойная инежнерная тактика, стыдиться тут нечего =)

17-04-2011 18:32 (UTC)
Прошу прощения, в wx не практиковался уже, наверно, больше года, так что по сути ничего сказать не могу, хато могу поделится новостями от разработчиков - недавно в wxBlog`е была заметка про то, что сейчас прикрутили возможность форматировать текст в ряде стандартных контролов =) Не знаю, правда, можно ли там делать индексы http://wxwidgets.blogspot.com/2011/02/markup-in-control-labels.html
This page was loaded Jun 24th 2017, 8:44 am GMT.