Горизонтальная прокрутка в ListBox ставится ручками
Например для данного примера можно сделать так:
Код
#Include "window9.bi"
Var hwnd=OpenWindow("",10,10,200,200)
ListBoxGadget(1,10,10,120,60,WS_VSCROLL Or WS_HSCROLL)
AddListBoxItem(1,"1 String 0123456789")
AddListBoxItem(1,"2 String 0123456789")
AddListBoxItem(1,"3 String 0123456789")
AddListBoxItem(1,"0 String 0123456789",0)
SendMessage(GadgetID(1), LB_SETHORIZONTALEXTENT, 140, 0)
Do
Var event=WaitEvent
Select Case event
Case EventClose
End
End Select
Loop
Однако это будет хорошо выглядеть, если ширина текста в пунктах ListBox останется неизменной. В случае увеличения длины строки, прокрутка длиннее не станет, пока ее не изменишь с помощью сообщения LB_SETHORIZONTALEXTENT . Можно конечно сразу вместо 140 поставить какое-нибудь большое число, именно так и делал в одной своей программе...
Есть способ получать в цикле каждую длину всех строк и высчитывать ширину каждого символа каждой строки с помощью ( GetTextMetrics, GetTextExtentPoint32), но вот как это скажется на производительности в случае большого кол-ва строк?!