Что мне делать с CEdit'ом?
Как мне покрасивее добавить строку текста в многострочный Cedit (программно, конечно :-)).
Например, надо вставить 5 пустых строк, а дальше строку с текстом.
Функции там нету такой (акромя SetWindowText'a), но ей неудобно пользоваться, т.к. она заменяет весь текст в CEdit'е, а мне надо именно в конец строку добавить.
И вообще может мне забить на Cedit, может есть контрол получшее?
Зарание спос.
Кодеры, помогите добрым словом!
Как мне покрасивее добавить строку текста в многострочный Cedit (программно, конечно :-)).
Например, надо вставить 5 пустых строк, а дальше строку с текстом.
Функции там нету такой (акромя SetWindowText'a), но ей неудобно пользоваться, т.к. она заменяет весь текст в CEdit'е, а мне надо именно в конец строку добавить.
И вообще может мне забить на Cedit, может есть контрол получшее?
Зарание спос.
Попробуйте CListBox, в нем такие вещи делаются проще. Строка, например, добавляется в конец так:
CListBox ListBox;
CString s;
...
s = "1234567890"
int i = ListBox.AddString(s);
И в переменной i получаем номер строки (начиная с нуля). А если нужно вставить строку в конкретное место, то так:
ListBox.InsertString(i, s);
причем все строки, начиная с i-ой, сдвинутся на одну. Можно и удалять строки:
int n = ListBox.InsertString(i);
где n - число строк после удаления (все строки после удаленной сдвигаются на одну). Еще много чего можно сделать, так что можете посмотреть описание в MSDN (или где-то еще).
to Addr: А что мешает получить сначала текст эдитбокса, прилепить к нему нужный, и втулить его обратно в эдитбокс?
to gerard: Альтернатива заменить эдитбокс листбоксом, конечно, интересная...
to Addr: А что мешает получить сначала текст эдитбокса, прилепить к нему нужный, и втулить его обратно в эдитбокс?
to Krivonos: Мне мешают два бага:
- Когда я вызываю GetWindowText(str), добавляю к строке новую строку и вызываю SetWindowText(str), текст в Edit'e "моргает"
- При таком способе добавления полоса прокрутки прыгает в верхнее положение
... идиотизм какой-то !!!
вместо писания проги я должен тут фигней страдать
to Krivonos: Мне мешают два бага:
- Когда я вызываю GetWindowText(str), добавляю к строке новую строку и вызываю SetWindowText(str), текст в Edit'e "моргает"
- При таком способе добавления полоса прокрутки прыгает в верхнее положение
... идиотизм какой-то !!!
вместо писания проги я должен тут фигней страдать
to Krivonos: Я, собственно, об альтернативе и полной замене не говорил, просто вижу: человек спрашивает, какие еще варианты есть - так почему бы не рассказать.
to Addr: Конечно, листбокс Вам подойдет если строки добавлять только программно, иначе без эдитбокса не обойтись. Попробуйте, кстати, функцию LineScroll(int m, int n) из CEdit - она прокручивает текст на m строк по вертикали и на n символов по горизонтали - так что проблема с полосой прокрутки решается. А что касается "моргания", это уже надо к предку обращаться (CWnd то есть), в нем наверняка что-то есть на такой случай.