LVITEM lvi = { 0 };
lvi.mask = LVIF_TEXT;
lvi.iItem = 0; //не догонца понял
lvi.iSubItem = 1; //что это за поля в структуре LVITEM
lvi.pszText = newclient->getName();
ListView_InsertItem(g_hClientsList, &lvi);
MultiColumn List Box
(не multicolumn). И среди сообщений не могу найти, те которыми
можно:
1. Устанавливать число колонок в стороках list box-ов
2. Устанавливать текст в каждой колнке, каждой стороки.
Есть у меня подозрение, что с кждой колонкой можно работать,
как с отдельным list box-ом...
То, о чём ты думаешь, называется ListView.
Да, это я не внимательный...
(увидел слово MULTICOLUMN и решлил - Вот оно то, что надо!)
-----------------------------------------
Сейчас уже нащёл это ListView в MSDN-е - сижу колонки клепаю...
Пытаюсь добавить в первую колонку добавить строку - и в итоге ничего...
Делаю так:
Код:
Вроде как lvi.iItem = 0 - это добвление в первую строку, lvi.iSubItem = 1 - в первую колонку...
Цитата: bave
Вроде как lvi.iItem = 0 - это добвление в первую строку, lvi.iSubItem = 1 - в первую колонку...
lvi.iSubItem = 1 - это вторая колонка (первая - 0).
Если у тебя в ListView 2 колонки то приведенный тобою код должен работать
а во вторую нет... (при lvi.iSubItem = 1)
-------------------------------------------------------------
(колонок всего пять - добовляется только в первую... -т.е. в 0)
Создавал вот так:
Код:
g_hClientList = GetDlgItem(hdlg, IDC_LIST2); //get list-view control handle
LVCOLUMN lvc1 = { 0 }; //column struct - 1
lvc1.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc1.cx = 40;
lvc1.pszText = _strdup("№");
lvc1.cchTextMax = sizeof("№");
lvc1.iSubItem = 0;
LVCOLUMN lvc2 = { 0 };
lvc2.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc2.cx = 140;
lvc2.pszText = _strdup("Client-IP");
lvc2.cchTextMax = sizeof("Client-IP");
lvc2.iSubItem = 1;
LVCOLUMN lvc3 = { 0 };
lvc3.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc3.cx = 150;
lvc3.pszText = _strdup("status");
lvc3.cchTextMax = sizeof("status");
lvc3.iSubItem = 2;
LVCOLUMN lvc4 = { 0 };
lvc4.mask= LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc4.cx = 150;
lvc4.pszText = _strdup("start time");
lvc4.cchTextMax = sizeof("start time");
lvc4.iSubItem = 3;
LVCOLUMN lvc5 = { 0 };
lvc5.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc5.cx = 150;
lvc5.pszText = _strdup("time left");
lvc5.cchTextMax = sizeof("time left");
lvc5.iSubItem = 4;
iNumber = ListView_InsertColumn(g_hClientList, 0, &lvc1);
iClientIP = ListView_InsertColumn(g_hClientList, 1, &lvc2);
iStatus = ListView_InsertColumn(g_hClientList, 2, &lvc3);
iStart = ListView_InsertColumn(g_hClientList, 3, &lvc4);
iLeft = ListView_InsertColumn(g_hClientList, 4, &lvc5);
LVCOLUMN lvc1 = { 0 }; //column struct - 1
lvc1.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc1.cx = 40;
lvc1.pszText = _strdup("№");
lvc1.cchTextMax = sizeof("№");
lvc1.iSubItem = 0;
LVCOLUMN lvc2 = { 0 };
lvc2.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc2.cx = 140;
lvc2.pszText = _strdup("Client-IP");
lvc2.cchTextMax = sizeof("Client-IP");
lvc2.iSubItem = 1;
LVCOLUMN lvc3 = { 0 };
lvc3.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc3.cx = 150;
lvc3.pszText = _strdup("status");
lvc3.cchTextMax = sizeof("status");
lvc3.iSubItem = 2;
LVCOLUMN lvc4 = { 0 };
lvc4.mask= LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc4.cx = 150;
lvc4.pszText = _strdup("start time");
lvc4.cchTextMax = sizeof("start time");
lvc4.iSubItem = 3;
LVCOLUMN lvc5 = { 0 };
lvc5.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc5.cx = 150;
lvc5.pszText = _strdup("time left");
lvc5.cchTextMax = sizeof("time left");
lvc5.iSubItem = 4;
iNumber = ListView_InsertColumn(g_hClientList, 0, &lvc1);
iClientIP = ListView_InsertColumn(g_hClientList, 1, &lvc2);
iStatus = ListView_InsertColumn(g_hClientList, 2, &lvc3);
iStart = ListView_InsertColumn(g_hClientList, 3, &lvc4);
iLeft = ListView_InsertColumn(g_hClientList, 4, &lvc5);
Цитата: bave
В первыую колонку текст добовляется - lvi.iSubItem = 0,
а во вторую нет... (при lvi.iSubItem = 1)
-------------------------------------------------------------
(колонок всего пять - добовляется только в первую... -т.е. в 0)
а во вторую нет... (при lvi.iSubItem = 1)
-------------------------------------------------------------
(колонок всего пять - добовляется только в первую... -т.е. в 0)
На сколько помню. То ListView_InsertItem ты только добавляеш строку (с нулевым елементом), а уже остальные сабайтимы устанавливаешь с помощью ListView_SetItemText(...). Так точно работает
Цитата: Freeman
То, о чём ты думаешь, называется ListView.
Можно и ListBox тоже сделать многостолбчатым, но придется вручную над этим работать.
Код:
lvi.mask = LVIF_TEXT;
lvi.iItem = 1;
lvi.iSubItem = 0;
lvi.pszText = tmpbuff;
int item = ListView_InsertItem(g_hClientList, &lvi);
newclient->setLviIndex(item);
ListView_SetItemText(g_hClientList, item, 1, newclient->getName());
lvi.iItem = 1;
lvi.iSubItem = 0;
lvi.pszText = tmpbuff;
int item = ListView_InsertItem(g_hClientList, &lvi);
newclient->setLviIndex(item);
ListView_SetItemText(g_hClientList, item, 1, newclient->getName());