Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Что мне делать с CEdit'ом?

4.6K
21 августа 2003 года
Addr
6 / / 13.08.2003
Кодеры, помогите добрым словом!

Как мне покрасивее добавить строку текста в многострочный Cedit (программно, конечно :-)).

Например, надо вставить 5 пустых строк, а дальше строку с текстом.

Функции там нету такой (акромя SetWindowText'a), но ей неудобно пользоваться, т.к. она заменяет весь текст в CEdit'е, а мне надо именно в конец строку добавить.

И вообще может мне забить на Cedit, может есть контрол получшее?

Зарание спос.
461
22 августа 2003 года
gerard
102 / / 20.12.1999
Цитата:
Originally posted by Addr
Кодеры, помогите добрым словом!

Как мне покрасивее добавить строку текста в многострочный 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 (или где-то еще).

426
23 августа 2003 года
Krivonos
112 / / 20.01.2000
to gerard: Альтернатива заменить эдитбокс листбоксом, конечно, интересная...
to Addr: А что мешает получить сначала текст эдитбокса, прилепить к нему нужный, и втулить его обратно в эдитбокс?
4.6K
25 августа 2003 года
Addr
6 / / 13.08.2003
Цитата:
Originally posted by Krivonos
to gerard: Альтернатива заменить эдитбокс листбоксом, конечно, интересная...
to Addr: А что мешает получить сначала текст эдитбокса, прилепить к нему нужный, и втулить его обратно в эдитбокс?



to Krivonos: Мне мешают два бага:
- Когда я вызываю GetWindowText(str), добавляю к строке новую строку и вызываю SetWindowText(str), текст в Edit'e "моргает"

- При таком способе добавления полоса прокрутки прыгает в верхнее положение

... идиотизм какой-то !!!
вместо писания проги я должен тут фигней страдать

461
28 августа 2003 года
gerard
102 / / 20.12.1999
Цитата:
Originally posted by Addr


to Krivonos: Мне мешают два бага:
- Когда я вызываю GetWindowText(str), добавляю к строке новую строку и вызываю SetWindowText(str), текст в Edit'e "моргает"

- При таком способе добавления полоса прокрутки прыгает в верхнее положение

... идиотизм какой-то !!!
вместо писания проги я должен тут фигней страдать



to Krivonos: Я, собственно, об альтернативе и полной замене не говорил, просто вижу: человек спрашивает, какие еще варианты есть - так почему бы не рассказать.
to Addr: Конечно, листбокс Вам подойдет если строки добавлять только программно, иначе без эдитбокса не обойтись. Попробуйте, кстати, функцию LineScroll(int m, int n) из CEdit - она прокручивает текст на m строк по вертикали и на n символов по горизонтали - так что проблема с полосой прокрутки решается. А что касается "моргания", это уже надо к предку обращаться (CWnd то есть), в нем наверняка что-то есть на такой случай.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог