По умолчанию CListBox не умеет прокручивать по горизонтали. Для того чтобы обойти это ограничение, необходимо добавить код, который будет считать максмимальную длинну строк и через CListBox::SetHorizontalExtent сдвигать содержимое.
void UpdateHorizBarWidth( const CString & item ) { CClientDC dc(this);
CFont * pFont = CListBox::GetFont(); dc.SelectObject(pFont);
CSize size = dc.GetTextExtent(item); size.cx += 3 * ::GetSystemMetrics(SM_CXBORDER);
if( size.cx > MaxWidth ) { MaxWidth = size.cx; CListBox::SetHorizontalExtent(MaxWidth); } } |
_Winnie C++ Colorizer |
Ес-но придется вызывать foreach UpdateHorizBarWidth при каждом изменении данных ListBox.