本人初次用CListCtrl 控件的时候,对于 InsertItem 和SetrtItemtext 两个函数的作用始终不是太懂,比如如果不先调用InsertItem 这个函数,后面的InsertItemtext 函数写了,也不起作用.查了MSDN,也没有收获,经过有人点拔,才恍然大悟.今天将经验说一下,希望有共同爱好者少走弯路. InsertItem 在 MSDN 中的函数原型如下 int InsertItem( const LVITEM* pItem ); int InsertItem( int nItem, LPCTSTR lpszItem ); int InsertItem( int nItem, LPCTSTR lpszItem, int nImage ); int InsertItem( UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState, UINT nStateMask, int nImage, LPARAM lParam ); 一般我们用的比较多的时第 2 种和第三种,其中第三种时建立一个带有头标的项 要调用第三个,可以先声明一个CImageList 对象 m_ImageList.Create(16,16,true,2,2); m_ImageList.Add(theApp.LoadIcon(IDR_MAINFRAME)); m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL); 这样,控件中的每一行的开头就有一个应用程序图标 现在转入正题,先介绍一下 INSERTITEM 个个参数的意义 nItem: 控件中行的索引 lpszItem : 控件头的名字 ......................................................................................................................................................................................................... SettItemtext 函数的原型 BOOL SetItemTex t( int nItem, int nSubItem, LPTSTR lpszText ); ******************注意这个函数中的参数nItem就是INSERTITEM中的NITEM, 也就是说InsertItem 是向控件声请一行来放数据,记住只是声请,那么方数据的工作就又 SETITEMTEXT 来实现 举例如下: CListCtrl m_listctrl; m_listctrl = new ClistCtrl(); m_listctrl.Creae(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EDITLABELS ,bigRect,this,IDC_LIST1 ); m_listctrl.InsertItem(0,"01"); m_SetItemtext(0,1,"1"); m_SetItemtext(0,2,"2"); '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 至于要添多少多少个数据,就由你的控件由多少列了 获得可以这样的道 int columns= m_listctr.GetHeaderCtrl()->GetItemCount(); 获得可以这样的道 int rows= m_listctrl.GetItemCount(); 下面附一...