CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define WS_HSCROLL 1048576
#define WS_VSCROLL 2097152
#define LB_ADDSTRING 384
#define LB_GETCOUNT 395
#define LB_GETTEXT 393
#define LB_SETHORIZONTALEXTENT 404
#define LBS_DISABLENOSCROLL 4096
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetTextExtentPoint32", "GetTextExtentPoint32A", "Gdi32.dll" );
external(INT, "GetDC", "GetDC", "User32.dll" );
int list, hdc, max_length=0;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
// добавить строки в список
add_list("текст0000");
add_list("текст1");
add_list("text2222222");
add_list("text33333333333333");
add_list("text4444444");
add_list("text5");
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
list=CreateWindow(0, "LISTBOX", "", LBS_DISABLENOSCROLL | WS_VSCROLL | WS_HSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 10, 100, 150, gethwnd(0), 0, 0, 0);
hdc=GetDC(list);
}
function add_list(string s)
{
int SIZE[2];
new char c[size(s)+1];
strcpy(#c[0], s);
GetTextExtentPoint32(hdc, address(#c[0]), sizearray(c), address(#SIZE[0])); // узнать длину текста в пикселях
if(max_length<SIZE[0])
{
max_length=SIZE[0]; // запомнить максимальную длину строки
sendmessage(LB_SETHORIZONTALEXTENT, SIZE[0], 0, formatiw(list)); // установить ширину прокрутки
}
sendmessage(LB_ADDSTRING, 0, address(#c[0]), formatiw(list));
delete c;
}