请问列表控件中的insertcolumn与insertitem有甚么区别【附有几行代码搞不明白】
在列表控件CListctrl中函数insertcolumn(列索引,列结构指针 )表示按某种方式插入索引列。既然如此,执行了该函数后列表已经完成了(我的意思是把某些列插入后,则形成了一个列表。比如:从星期一--->星期五的课程表,按照星期(列)逐步插入后,则所有的行也就自然形成了(即:第一节课(monday->friday)也形成了)。问题:为什么还好insertitem函数干什么?
下面的代码就是我所说的问题,程序可以运行,但是本人就是有点不明白,请各位大侠指点【用到一点ODBC数据库方面的知识】,如果有人想研究整个程序的代码,敬请联系,我可以给你发过去。
第一段代码:
int i=0,j=0;
CODBCFieldInfo DbFi;//存储记录集字段信息的结构体
LV_COLUMN m_Lc;//存储列信息的结构体
m_Lc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;//设置列属性
//读取记录集的字段信息
for(i=0;i<m_Set->m_nFields;i++)
{
m_Set->GetODBCFieldInfo(i,DbFi);
m_Lc.iSubItem=i;
m_Lc.fmt=LVCFMT_LEFT;
m_Lc.cx=DbFi.m_strName.GetLength()*10+100;
m_Lc.pszText=DbFi.m_strName.GetBuffer(DbFi.m_strName.GetLength());
GetListCtrl().InsertColumn(i,&m_Lc);
}
..............
第2段代码:
LV_ITEM m_item;//条目结构体对象
CString string;//字符串临时变量
CDBVariant DbVariant;
i=0;
if(m_Set->IsEOF())//记录集是否为空
{
AfxMessageBox("记录集没有记录");
return;
}
m_Set->MoveFirst();//从第一个记录开始
while(m_Set->IsEOF()==0)//是否到达最后一个记录
{
m_item.mask=LVIF_TEXT;
m_item.iItem=i;
m_item.iSubItem=0;
m_Set->GetFieldValue((short)0,string);
m_item.pszText=string.GetBuffer(string.GetLength());
m_List->InsertItem(&m_item);//插入条目
//显示列数据
for(j=1;j<m_Set->m_nFields;j++)
{
m_Set->GetFieldValue((short)j,string);
m_List->SetItemText(i,j,string.GetBuffer(string.GetLength()));
}
m_Set->MoveNext();//下移记录
i++;
}