Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Перенос в HTML


Автор: Anton Vatchenko 24.9.2005, 11:32
Я делаю программу, в которой будет отображаться HTML. Все уже сделал (почти): теги распознаются, все заносится в структуру, отображается. Но пока не могу сделать перенос строк (по словам), которые не влазят. Как и когда лучше такое делать? При разборе HTML, или при отрисовке? Что делать, когда размеры окна меняются. Эксплорер быстро действует, хотелось бы и мне так...

Автор: Dreamer_0x01 24.9.2005, 16:36
как и в чем происходит вывод информации в ваш "миниброузер"?
Я так понимаю, что это какое-то окно, в контексте устройства которого вы рисуете какими-то фуннкциями типа DrawText(), или что-то "нестандартное"?

Автор: Dr.Wisdom 24.9.2005, 18:15
Если я правильно понял проблему. smile

Пусть текст переноситься при отрисовке, которая заново проводиться при изменении размеров окна.

Пусть считается скока символов полезет на экран. Со шрифтами с различной длинной символа это - проблема.

Найти нелезущий символ в строке, найти первый предыдущий пробел, начать новую строчку, повторить.

Автор: Дрон 24.9.2005, 18:39
При отрисовки кажой строки сначала считаем её размер в пикселях (если это WinAPI -- то GetTextExtentPoint32 вам в руки smile ).

Если выясняется, что она не влазит, то начинаем шаманить.
Например пусть у нас до края экрана 300 пикселов, а нам нужно 500.
Ну берём и делим 300/500 = 60%.

Отсекаем 60% строки и смотрим на её ширину (Да, я знаю, что ширина символов произвольна, но сейчас нам нужно только приближение)
Влазит? Ну тогда вот от этого места и начинаем добавлять по одному слову пока не вылезем за допустимую ширину.
Не влазит? Давайте опять прикинем в % сколько нам нужно оставить от строки и вернёмся к предыдущему шагу.

Собственно вот, если нужен был негритянский алгоритм...

Если же мы белые люди, то просто возьмём WinAPI функцию DrawText и в параметре uFormat укажем ей DT_WORDBREAK smile smile

ЗЫ: Это всё для WinAPI. Хотелось бы узнать под какую платформу пишем и главное чем нас Internet Explorer не устроил? smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)