static int ColumnWidth[6] = {100, 100, 150, 150};
LV_COLUMN lvc; char dig[10];
memset(dig, '\0', sizeof(dig)); lvc.mask =  LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;//设置表头风格
lvc.iSubItem = 0;// 表头列序 
lvc.pszText = "Trunk No" ;  //表头名称 
lvc.cx = ColumnWidth[0]; //表头宽度
m_ListCtrl.InsertColumn(0,&lvc);  //插入列 lvc.iSubItem = 1;
lvc.pszText = "State" ;
lvc.cx = ColumnWidth[1];
m_ListCtrl.InsertColumn(1,&lvc); LV_ITEM lvi; for(int i = 0; i <=10; i++) {    //所有trunk no 每个写一行
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvi.iItem = i;   //iItem代表哪一行,i从0开始到m_TotalTrunk即每个端口用一行显示
lvi.iSubItem = 0;  //iSubItem是用来指明第几列
itoa( i, dig, 10 ) ; 
               //itoa()函数有3个参数:第一个参数是要转换的数字
           //第二个参数是目标字符串,第三个参数是转移数字时所用的基数
lvi.pszText = dig;//dig是字符串
m_ListCtrl.InsertItem(i,dig);
        m_ListCtrl.SetItemText(i,1,"FREE");
  }
  HICON   myIcon[3];   
  myIcon[0]=AfxGetApp()->LoadIcon(IDI_ICON1);   
  myIcon[1]=AfxGetApp()->LoadIcon(IDI_ICON2);     
    
  CImageList   myList;   
  myList.Create(32,32,TRUE,2,2);   
  for(int   j=0;j<2;j++)   
  {   
   myList.Add(myIcon[j]);   
  }   
  m_ListCtrl.SetImageList(&myList,LVSIL_SMALL);  LV_COLUMN  lvitem;
  lvitem.mask=LVIF_IMAGE|LVIF_TEXT;  
  lvitem.iSubItem=2;
  lvc.cx = ColumnWidth[2]; 
  lvitem.pszText="hello";   
  lvitem.iImage=1;   
  
  m_ListCtrl.InsertColumn(2,&lvc);
而且,hello还显示不出来,到底是怎么回事?我知道自己写的很乱,第一次做,希望大家帮忙改正!

解决方案 »

  1.   

    CImageList   myList;
    这个定义成窗口的成员变量。
      

  2.   

    我这是从网上现学的,大家体谅一下吧。我真不知道怎么做了!程序运行能显示出前两个列表段,最后一个想显示图片的就是弄不出来。不是应该将CListCtrl与CImagelist联系起来吗?  
    LV_COLUMN  lvitem; 
    lvitem.mask=LVIF_IMAGE ¦LVIF_TEXT;
    我设置成这个样子,还将图标存到了CImageList中, 
    HICON   myIcon[3];    
      myIcon[0]=AfxGetApp()->LoadIcon(IDI_ICON1);    
      myIcon[1]=AfxGetApp()->LoadIcon(IDI_ICON2);      
         
      CImageList   myList;    
      myList.Create(32,32,TRUE,2,2);    
      for(int   j=0;j <2;j++)    
      {    
       myList.Add(myIcon[j]);    
      }    
      m_ListCtrl.SetImageList(&myList,LVSIL_SMALL); 
      这样之后设定
      LV_COLUMN  lvitem; 
      lvitem.mask=LVIF_IMAGE ¦LVIF_TEXT;   
      lvitem.iSubItem=2; 
      lvc.cx = ColumnWidth[2];  
      lvitem.pszText="hello";    
      lvitem.iImage=1; (其中这个iImage设为1我认为就是现实第一个IDI_ICON1) 不过不对,什么也显示不出来!
      

  3.   

    m_ListCtrl.SetImageList(&myList,LVSIL_SMALL);
    static int ColumnWidth[6] = {100, 100, 150, 150};
    LV_COLUMN lvc; char dig[10];
    memset(dig, '\0', sizeof(dig)); lvc.mask =  LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;//设置表头风格
    lvc.iSubItem = 0;// 表头列序 
    lvc.pszText = "Trunk No" ;  //表头名称 
    lvc.cx = ColumnWidth[0]; //表头宽度
    m_ListCtrl.InsertColumn(0,&lvc);  //插入列 lvc.iSubItem = 1;
    lvc.pszText = "State" ;
    lvc.cx = ColumnWidth[1];
    m_ListCtrl.InsertColumn(1,&lvc);        LV_ITEM lvi;
    for(int i = 0; i <=10; i++) {    //所有trunk no 每个写一行
    lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
    lvi.iItem = i;   //iItem代表哪一行,i从0开始到m_TotalTrunk即每个端口用一行显示
    lvi.iSubItem = 0;  //iSubItem是用来指明第几列
    itoa( i, dig, 10 ) ; 
                   //itoa()函数有3个参数:第一个参数是要转换的数字
               //第二个参数是目标字符串,第三个参数是转移数字时所用的基数
    lvi.pszText = dig;//dig是字符串
    m_ListCtrl.InsertItem(i,dig);
            m_ListCtrl.SetItemText(i,1,"FREE");
      }
    这是我的原始代码,想再加入一列现实图片,就改成了第一次提问的样子!大家帮忙改一下吧,谢谢了