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


Автор: Royan 6.7.2004, 14:56
Допустим у меня выведен форматированный текст, (что-то жирным что-то курсивом)

Задача: обрабатывая сообщение WM_PAINT, не производить форматирование повторно то есть не прибегать к умышленному выведению фрагмента жирным или курсивом, а воспользоваться уже сделанным форматированием. При чем следует учесть что вариант сделать скриншот и потом его пихать по пришествии WM_PAINT не вариант так как текст может вылезать за рамки окна => скриншот здесь не поможет

Автор: AndyY 6.7.2004, 15:13
а разве есть проблема сохранить форматирование?
думаю, это самый простой вариант - хранить список слов (с атрибутами шрифта и размерами текста) и выводить их на paint в цикле

Автор: Nastya 6.7.2004, 15:20
Более правильно все "рисование" в том числе вывод текста помещать в WM_PAINT, и по определенным событиям вызывать обновление нужного прямоугоьника. Соответсвенно меняя значения переменных, отвечающих за формат графическо информации

Автор: Олег М 6.7.2004, 15:26
Цитата
Задача: обрабатывая сообщение WM_PAINT, не производить форматирование повторно то есть не прибегать к умышленному выведению фрагмента жирным или курсивом, а воспользоваться уже сделанным форматированием. При чем следует учесть что вариант сделать скриншот и потом его пихать по пришествии WM_PAINT не вариант так как текст может вылезать за рамки окна => скриншот здесь не поможет

Что-то я вообще не въехал в задачу.
Что значит производить форматирование повторно и куда делось в таком случае старое?
Что вообще понимается под форматированием в данном случае?

Автор: Royan 6.7.2004, 15:50
Кажется я немного поумнел. По всей видимости я могу сделать следующее. Разделив текст на логические единицы, (в моем случае это исключительно слова), я должен запомнить HFONT каждого такого слова. То есть в грубом виде иметь массив типа HFONT размерностью == (кол-во слов в файле откуда берется текст)
Хотя если слов будет 10000 это плохое решение может можно сделать иначе


Цитата
Что вообще понимается под форматированием в данном случае?


Форматированный тест означает что, что-то выведено жирным, что-то курсивом и шрифтом Courier а что-то оставлено без форматирования.

При этом главное не использовать ничего кроме WinAPI, STL и собственно С++

Автор: AndyY 6.7.2004, 16:10
Royan
ну, можно хранить не сам HFONT, а индекс в массиве HFONT:). повторяюсь - еще удобно хранить размеры (ширину) слова для быстрого расчета позиции следующего.

Автор: Royan 6.7.2004, 17:07
Цитата
ну, можно хранить не сам HFONT, а индекс в массиве HFONT:)
Собственно карта как раз это то что нужно, одним словом спасибо видимо я разобрался с тем, что дальше писать

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