| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > CListBox и SetHorizontalExtent() |
| Автор: takedo 1.3.2006, 12:59 | ||
| Создал класс, производный от CListBox. Создаю его так: Create(WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|LBS_OWNERDRAWFIXED,CRect(0,0,10,10),this,IDM_LISTBOX); Дальше так:
Так вот сколько бы я не устанавливал в значении SetHorizontalExtent(хоть 10 хоть 10000) - результат тот же!!!! А именно, поле в котором выводится текст(список) всегда по моему одинакового горизонтального размера, и оно прокручивается с помощью горизонтальной прокрутки несмотря на то, какой размер задается в SetHorizontalExtent, даже когда текст с размером MaxChar полностью влазит в видимую часть этого поля. А прокручивать получается так далеко, что вообще все надписи могут исчезнуть. Здесь sz.cx/str.GetCount() - ширина одного символа, пока так (у меня есть конечно текст самой длинной надписи), в общем не это главное. Помогите сделать так, чтобы прокрутка осуществлялась только до конца моей самой длинной строки, плиз. |
| Автор: redpinguin 1.3.2006, 13:39 | ||||||||
| Допиши в класс лист бокса 2 функции
и перегрузи AddString
размеры сам подставь у меня с иконками был класс так что там везде +20 и больше |
| Автор: takedo 1.3.2006, 15:29 |
| redpinguin, Вообщем добалил я в AddString SetHorizontalExtent() и заработало, видимо надо хоть раз оттуда было вызвать! Не понял правдо что за зверь GetTabbedTextExtent()? Спасибо. |
| Автор: Earnest 2.3.2006, 14:56 |
| Эта функция возвращает размер (ширину, высоту) заданной строки в соответствии со шрифтом, установленным в контексте, и с учетом табуляций. |
| Автор: takedo 3.3.2006, 13:39 | ||
| Earnest, мда, скорее всего с моими познаниями в аглицком до конца с параметрами "зверя" не разбирусь, но вот что у меня получилось: CPaintDC dc(this); // device context for painting
Однако..., стоит наверное использовать только GetTabbedTextExtent. Добавлено @ 13:40 CPaintDC dc(this); // device context for painting это в коде |
| Автор: Earnest 4.3.2006, 18:38 |
| Два оставшихся параметра - это число позиций табуляции и массив позиций. Чтобы все правильно считалось, нужно чтобы позиции табуляций совпадали с теми, которые установлены в листбоксе. Если ты сам ничего не устанавливал листбоксу, то скорее всего, все совпадает. Но если захочешь установить листбоксу другие позиции - придется и здесь их передавать. |