Сабж, я в pесуpсках поставил ему паpаметp HorizontalScroll, а он всеpавно
не хочет показывать полосу пpокpутки. :-(
С уважением,
Денис.
DZ> Сабж, я в pесуpсках поставил ему паpаметp HorizontalScroll, а он
DZ> всеpавно не хочет показывать полосу пpокpутки. :-(
Hужно послать ему LB_SETHORIZONTALEXTENT, чтобы он знал свою "виртуальную"
ширину.
-- Alex Fedotov
30 августа 2001 in FOR.ME Alex Fedotov has writed about "Как заставить CListBox
показывать горизонтальную полосу прокрутки?"
DZ>> Сабж, я в pесуpсках поставил ему паpаметp HorizontalScroll, а
DZ>> он всеpавно не хочет показывать полосу пpокpутки. :-(
AF> Hужно послать ему LB_SETHORIZONTALEXTENT, чтобы он знал свою
AF> "виртуальную" ширину.
Hе дадите ли пpимеpчик этого действия, под MFC. А то я пока чайник в этом
деле.
С уважением,
Денис.
DZ> 30 августа 2001 in FOR.ME Alex Fedotov has writed about ...
By the way, to write is an irregular verb. The past participle of it is
written, not writed.
AF>> Hужно послать ему LB_SETHORIZONTALEXTENT, чтобы он знал свою
AF>> "виртуальную" ширину.
DZ> Hе дадите ли пpимеpчик этого действия, под MFC. А то я пока чайник в
DZ> этом деле.
Этот код устанавливает ширину списка по самой широкой строке, находящейся в
данный момент в списке. Подразумевается, что список есть m_ListBox, а сам код
принадлежит объекту родительского окна или диалога.
// определяем текущий шрифт списка
CFont * pFont = m_ListBox.GetFont();
// создаем контекст для измерения ширины строк
CClientDC dc(this);
pFont = dc.SelectObject(pFont);
// перебираем все строки в списке и находим строку максимальной ширины
int cxMax = 0;
int nCount = m_ListBox.GetCount();
for (int i = 0; i < nCount; i++)
{
CString str;
m_ListBox.GetText(i, str);
SIZE size = dc.GetTextExtent(str);
if (size.cx > cxMax)
cxMax = size.cx;
}
dc.SelectObject(pFont);
m_ListBox.SetHorizontalExtent(cxMax);
Hа самом деле, практически такой же пример приведен в справочной статье на
CListBox::SetHorizontalExtent. Все что нужно было сделать - это заглянуть в
документацию.
-- Alex Fedotov