我用的是CListCtrl report
结果,如果Item数大于10的时候,所有行的第一列全部显示,而标号大于10的其他行都不显示。呜呜呜呜~~~
源码如下:
CString strText;
LV_COLUMN lc;
lc.mask = LVCF_FMT | LVCF_WIDTH |
LVCF_TEXT | LVCF_SUBITEM;
lc.fmt = LVCFMT_CENTER;
lc.cx = 75;
lc.iSubItem = 0; for(int i=0; i<2; i++)
{
strText.Format(TEXT("column %d"), i);
lc.pszText = strText.GetBuffer(strText.GetLength());
m_List1.InsertColumn(i, &lc);
}
m_List1.SetItemCount(20); for (i=0;i < 20;i++)
{
strText.Format(TEXT("item %d"), i); m_List1.InsertItem(
LVIF_TEXT|LVIF_STATE, i, strText,
(i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED,
0, 0); for (int j=1;j < 2;j++)
{
strText.Format(TEXT("sub-item %d %d"), i, j);
m_List1.SetItemText(i, j, strText);
}
}
m_List1.SetRedraw();
m_List1.Invalidate();
return;显示的结果如下:
column0 column1
item0 sub-item 0 1
item1 sub-item 1 1
item10
item12
item13
item14
item15
item16
item17
item18
item19
item2 sub-item 2 1
item3 sub-item 3 1
item4 sub-item 4 1
item5 sub-item 5 1
item6 sub-item 6 1
item7 sub-item 7 1
item8 sub-item 8 1
item9 sub-item 19 1
结果,如果Item数大于10的时候,所有行的第一列全部显示,而标号大于10的其他行都不显示。呜呜呜呜~~~
源码如下:
CString strText;
LV_COLUMN lc;
lc.mask = LVCF_FMT | LVCF_WIDTH |
LVCF_TEXT | LVCF_SUBITEM;
lc.fmt = LVCFMT_CENTER;
lc.cx = 75;
lc.iSubItem = 0; for(int i=0; i<2; i++)
{
strText.Format(TEXT("column %d"), i);
lc.pszText = strText.GetBuffer(strText.GetLength());
m_List1.InsertColumn(i, &lc);
}
m_List1.SetItemCount(20); for (i=0;i < 20;i++)
{
strText.Format(TEXT("item %d"), i); m_List1.InsertItem(
LVIF_TEXT|LVIF_STATE, i, strText,
(i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED,
0, 0); for (int j=1;j < 2;j++)
{
strText.Format(TEXT("sub-item %d %d"), i, j);
m_List1.SetItemText(i, j, strText);
}
}
m_List1.SetRedraw();
m_List1.Invalidate();
return;显示的结果如下:
column0 column1
item0 sub-item 0 1
item1 sub-item 1 1
item10
item12
item13
item14
item15
item16
item17
item18
item19
item2 sub-item 2 1
item3 sub-item 3 1
item4 sub-item 4 1
item5 sub-item 5 1
item6 sub-item 6 1
item7 sub-item 7 1
item8 sub-item 8 1
item9 sub-item 19 1
for (i=0;i < 20;i++)
{
strText.Format(TEXT("item %d"), i); int nItem = m_List1.InsertItem( //这里增加一个变量nItem
LVIF_TEXT|LVIF_STATE, i, strText,
(i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED,
0, 0); for (int j=1;j < 2;j++)
{
strText.Format(TEXT("sub-item %d %d"), i, j);
m_List1.SetItemText(nItem, j, strText); //用在这里
}
}因为你的listctrl是排序的,所以item10位置在item1后面而不在第10的位置上。