请问下面两段代码有区别吗?为什么第一段执行后没有第一行,而且subitem文字也都没有(就是说只有第二行开始的第一列文字)显示?第二段可以正常显示。
代码1:
for (iItem = 0; iItem < 50; iItem++)
{
lvitem.iItem = iItem;
lvitem.iSubItem = 0;
sprintf( buffer, "Cell( %d, %d )", iItem+1, iSubItem+1);
lvitem.pszText = buffer;
m_ctlGridList.InsertItem(&lvitem);
for (iSubItem = 1; iSubItem < 4; iSubItem++)
{
lvitem.mask = LVIF_TEXT;
lvitem.iSubItem = iSubItem;
sprintf( buffer, "Cell( %d, %d )", iItem+1, iSubItem+1);
lvitem.pszText = buffer;

m_ctlGridList.SetItem(&lvitem);
}
}
代码2:
for (iItem = 0; iItem < 50; iItem++)
{
for (iSubItem = 0; iSubItem < 4; iSubItem++)
{
lvitem.mask = LVIF_TEXT;
lvitem.iItem = iItem;
lvitem.iSubItem = iSubItem;
sprintf( buffer, "Cell( %d, %d )", iItem+1, iSubItem+1);
lvitem.pszText = buffer;

if (iSubItem == 0)
m_ctlGridList.InsertItem(&lvitem);
else
m_ctlGridList.SetItem(&lvitem);
}
}

解决方案 »

  1.   

    lvitem.mask = LVIF_TEXT; 
    第一行好像少了这个
      

  2.   

    你既然第二个正确,那就看看这两个有什么区别啊:for (iItem = 0; iItem < 50; iItem++) 

    lvitem.iItem = iItem; 
    lvitem.iSubItem = 0; 
    lvitem.mask = LVIF_TEXT; 
    sprintf( buffer, "Cell( %d, %d )", iItem+1, iSubItem+1); 
    lvitem.pszText = buffer; 
    m_ctlGridList.InsertItem(&lvitem); 
    for (iSubItem = 1; iSubItem < 4; iSubItem++) 

    //lvitem.mask = LVIF_TEXT; 
    lvitem.iSubItem = iSubItem; 
    sprintf( buffer, "Cell( %d, %d )", iItem+1, iSubItem+1); 
    lvitem.pszText = buffer; m_ctlGridList.SetItem(&lvitem);