CListCtrl控件中InsertItem和SetItemText函数

来源:互联网 发布:淘宝网交电费 编辑:程序博客网 时间:2024/05/21 00:54

vc 为什么我用m_list.SetItemText(1, 0, "KKK")设置列表内容

一是 CListCtrl 要设置为 Report 视图    (属性View)

二是要提前设置好列,如图,我估计是第一个原因

m_lst.InsertColumn(0, "学号", LVCFMT_LEFT, 100);
m_lst.InsertColumn(1, "姓名", LVCFMT_LEFT, 90);


该函数CListCtr::InsertItem一般和CListCtr::SetItemText一起使用。
  list.InsertItem(0,"主数据");
  插入数据"主数据"到第一行的主项,你可以认为是第一列。
  list.SetItemText(0,1,"子数据");
  将第一行第二列(1表示第二列)设置为“子数据”。



给你个例子。。。
m_list.InsertColumn(0,"Col 1");
 m_list.InsertColumn(1,"Col 2");
 m_list.InsertColumn(2,"Col 3");
 m_list.InsertColumn(3,"Col 4");
 m_list.InsertItem(0,"row1",0);
 CString stemp ="";
 for(int i =0;i<4;i++)
 {
  stemp.Format("row 0 %d",i);
  m_list.SetItemText(0,i,stemp);
 }
 m_list.InsertItem(0,"row befor prev",0);
 m_list.InsertItem(2,"row after prev",0);
注意InsertItem的第一个参数
结果因该是这样的
row befor prev
row1 row01  row02 row03 row04
row after prev



CListCtrl控件中InsertItem和SetItemText函数


本人初次用CListCtrl控件的时候,对于 InsertItem和SetItemText两个函数的作用始终不是太懂,比如如果不先调用InsertItem这个函数,后面的SetItemText函数写了,也不起作用.查了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 : 控件头的名字
     .........................................................................................................................................................................................................
     SetItemText函数的原型
    BOOL SetItemText( 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();



0 0
原创粉丝点击