我想要使用List-View
控件在「網格」中顯示LDAP搜索的結果。我已經寫了一些測試代碼來看看它是如何工作的,但它並沒有按照我的意願顯示。據我瞭解,每個Item
相當於一個「行」(使用LVS_REPORT
風格),而Subitem
相當於一個「列」(例如,對於每個項目我可以顯示多個子項目,每個子項目都在單獨的列中相同的行)。列表視圖控件中的項目和子項目
這是我的測試代碼,目前設置爲創建四列,帶有單個項目和四個子項目(對應於四列)。兩個功能:一個創建列,另一個插入項目。
int CreateColumns(HWND *hwndlistbox)
{
wchar_t *cnames[100];
LVCOLUMN lvc;
int i;
cnames[0] = L"column1";
cnames[1] = L"column2";
cnames[2] = L"column3";
cnames[3] = L"column4";
cnames[4] = NULL;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
for (i = 0; cnames[i] != NULL; i++)
{
lvc.iSubItem = i;
lvc.pszText = cnames[i];
lvc.cx = 100;
lvc.fmt = LVCFMT_LEFT;
ListView_InsertColumn(*hwndlistbox, i, &lvc);
}
return i;
}
void InsertItems(HWND *hwndlistbox, int *columncount)
{
LVITEM lvi;
wchar_t *items[100];
int i, j;
items[0] = L"text1";
items[1] = L"text2";
items[2] = L"text3";
items[3] = L"text4";
items[4] = NULL;
lvi.mask = LVIF_TEXT;
lvi.iItem = 0;
for (i = 0; i < *columncount; i++)
{
lvi.pszText = items[i];
lvi.iSubItem = i;
ListView_InsertItem(*hwndlistbox, &lvi);
}
}
我希望這產生一個單行(lvi.iItem = 0;
),每列(lvi.iSubItem = i;
)下的文本字符串。這是它,而不是顯示:
改變各文本字符串lvi.iSubItem = i
到lvi.iSubItem = 0
結果被顯示爲新行的第一列:
我周圍玩使用它,對iItem
和iSubItem
上的數字進行硬編碼,將兩者都更改爲i
,但我無法使其顯示除第一列以外的任何地方的文本。我究竟做錯了什麼?
完美的工作,謝謝。回覆:內存,這只是一些帶有硬編碼字符串的測試代碼; 「真正的」內部將會不同。 – eurotrash 2014-10-12 09:49:13