Переход на новую строчку CStatic

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Apokal
Сообщения: 81
Зарегистрирован: 14 янв 2008, 19:02

Здраствуйте, подскажите как перейти на новую строчку в Static Text'e (MFC). Если это поможет, то задача состояла в том чтоб из текстового файла считать текст и отобразить его в Static Text'e, но из-за того что он не резиновый, неоходимо както перейти на новую строчку. Я пробывал SetCaretPos, но это непомогло.
For Those Who About The Rock We Salute You!!!
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Нужно в сам текст вставить символы разделения строки \r\n

Ещё могу подсказать вариант: вместо элемента Static можно использовать элемент Edit c флагом ReadOnly = true.
Тогда он будет выглядеть как обычный Static, но у него есть свойство автоматического переноса строки по словам (Word wrap) или автопрокрутка текста (без Word wrap).
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

Я перевожу строку в статике только символом \n. В свойствах статика должно соять true в Multiline, иначе статик однострочный и строку ни чем не переведёшь. Кстати, автоматический перенос работает и в статике.
Apokal
Сообщения: 81
Зарегистрирован: 14 янв 2008, 19:02

Спасибо WinMain и Albor, попробывал и так и так все работает. Правда сначала невышло, немог понять почему, а оказалось нада было установить в False параметр Auto HScroll и Auto VScroll иначе текст бы не разбивалса, а AutoHScroll по умолчанию стоит True. Плюс еси нада зделать Едит похожим на Статик то нада также установить в фолс параметр Border, но это уже так...
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Есть есчо вопросик... Допустим я считал первую строку из файла заюзал SetWindowText, текст отобразилса в едите, читаю вторую строчку с файла, но если юзать опять SetWindowText то новый текст заменить старый. Как бы так зделать чтобы выводилса текст подряд? Пока что у меня есть два CString в одном я сохраняю строчки которые читаю, а во втором их обьеденяю каждый раз, но хотелось бы без этого както.
For Those Who About The Rock We Salute You!!!
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

GetWindowText() + текст из файла
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Это всё не то.
Лучше сначала определить размер файла, выделить в памяти массив соответствующего размера, прочитать в него весь файл целиком, преобразовать эти данные в текстовую строку и передать в текстовое поле.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

WinMain прав. Если в задаче требуется вывести содержимое всего файла без каких бы-то ни было ограничений, то единственный правильный способ - это прочитать файл целиком. Когда мы работаем с файлами, наша главная задача минимизировать количество обращений к жёсткому диску.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

В принципе можно вместо обычного Edit'a использовать RichEdit, который как раз берёт текст по кускам (блоки по 4096 байт). В него можно записывать как обычный (неформатированный) текст, так и форматированный текст в формате RTF. Текст передаётся через отдельную CALLBACK-процедуру. Я кода-то даже класс специальый делал, в котором можно загружать данные в RichEdit как из файла, так и просто из массива или из ресурсов приложения. Вот он...

http://forum.developing.ru/showthread.php?t=13152
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Я по поводу отображения многострочного статического текста.
Вместо элемента Static я использовал ListBox. Текст читаешь построчно и каждую строку добавляешь в ListBox. Только нужно сбросить опцию сортировки, иначе строки будут по алфавиту упорядочены.
Поумнеть несложно, куда труднее от дури избавиться.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

У ListBox также должно быть свойство Text, через которое по чтению и записи доступен многострочный текст. Т.е. тоже можно не построчно добавлять, а весь файл целиком.

PS
По крайней мере в VCL есть такое свойство... Для MFC проверьте.
Ответить