CODE:#define GWL_HINSTANCE -6
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define LVM_INSERTCOLUMN 4193
#define LVM_INSERTITEM 4173
#define LVM_SETITEM 4172
#define LVCF_FMT 1
#define LVCF_WIDTH 2
#define LVCF_TEXT 4
#define LVCF_SUBITEM 8
#define LVCFMT_LEFT 0
#define LVS_REPORT 1
#define LVIF_TEXT 1
#define CP_ACP 0
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
int histance, listview;
createdialog(0);
showdialog(0, "Dialog", 300, 300, 600, 500, 1, 1);
loop()sleep(100);
function getmessage(0, WM_CREATE)
{
histance=GetWindowLong(gethwnd(0), GWL_HINSTANCE);
listview=CreateWindow(0, "SysListView32", "", LVS_REPORT | WS_VISIBLE | WS_CHILD | WS_BORDER, 10, 10, 300, 200, gethwnd(0), 0, histance, 0, 0);
// добавить столбцы в список
add_column(listview, 2, "Столбец3", 100); // хендл ListView, индекс столбца, текст столбца, ширина столбца
add_column(listview, 1, "Столбец2", 100);
add_column(listview, 0, "Столбец1", 100);
// добавить строки в список
add_item(listview, "Строка3"); // хендл ListView, текст строки
add_item(listview, "Строка2");
add_item(listview, "Строка1");
// добавить подстроки в список
add_subitem(listview, 1, 0, "Подстрока1"); // хендл ListView, индекс столбца, номер строки, текст подстроки
add_subitem(listview, 2, 0, "Подстрока2");
add_subitem(listview, 1, 1, "Подстрока3");
add_subitem(listview, 2, 1, "Подстрока4");
add_subitem(listview, 1, 2, "Подстрока5");
add_subitem(listview, 2, 2, "Подстрока6");
}
function add_column(int handle_list, int num_column, string text_column, int width_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVCOLUMN[11];
initialarray(#LVCOLUMN[0], 0);
LVCOLUMN[0]=LVCF_FMT + LVCF_WIDTH + LVCF_TEXT + LVCF_SUBITEM;
LVCOLUMN[1]=LVCFMT_LEFT;
LVCOLUMN[2]=width_column;
LVCOLUMN[3]=address(#text_list[0]);
LVCOLUMN[5]=num_column;
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_INSERTCOLUMN, 0, address(#LVCOLUMN[0]), formatiw(handle_list));
}
function add_item(int handle_list, string text_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVITEM[15];
initialarray(#LVITEM[0], 0);
LVITEM[0]=LVIF_TEXT;
LVITEM[5]=address(#text_list[0]);
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_INSERTITEM, 0, address(#LVITEM[0]), formatiw(handle_list));
}
function add_subitem(int handle_list, int num_column, int num_string, string text_column)
{
char text_list[99];
strcpy(#text_list[0], text_column);
int LVITEM[15];
initialarray(#LVITEM[0], 0);
LVITEM[0]=LVIF_TEXT;
LVITEM[1]=num_string;
LVITEM[2]=num_column;
LVITEM[5]=address(#text_list[0]);
ansi_unicode(text_column, #text_list[0], sizearray(text_list));
sendmessage(LVM_SETITEM, 0, address(#LVITEM[0]), formatiw(handle_list));
}
function ansi_unicode(string S, char #cc, int size_cc)
{
int count=MultiByteToWideChar(1251, CP_ACP, S, size(S), address(#cc[0]), size_cc);
cc[count*2]=0; cc[count*2+1]=0;
}