Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перенос в HTML 
:(
    Опции темы
Anton Vatchenko
Дата 24.9.2005, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



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


--------------------
user posted image
PM MAIL   Вверх
Dreamer_0x01
Дата 24.9.2005, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 12



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


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Dr.Wisdom
Дата 24.9.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 6.1.2005

Репутация: нет
Всего: 0



Если я правильно понял проблему. smile

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

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

Найти нелезущий символ в строке, найти первый предыдущий пробел, начать новую строчку, повторить.
--------------------
VIVA LA RESISTANCE
PM MAIL   Вверх
Дрон
Дата 24.9.2005, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



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

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

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

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

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

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

Это сообщение отредактировал(а) Дрон - 24.9.2005, 18:39


--------------------
Да. Именно так.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.