各位大侠们,看了半天的Xlistcontrol也没看出什么名堂来,因为我想做个第一列和最后一列都为chencbox这么一个样子的页面。大家有什么办法吗?
CImageList myList;
HICON myIcon[3]; 
    myIcon[0]=AfxGetApp()->LoadIcon(IDB_BITMAP3);//
myList.Create(32, 16, ILC_COLOR32, 8, 8);     myList.Add(myIcon[0]); 
m_showlist.SetImageList(&myList, LVSIL_SMALL); 
LVITEM lvitem; 
lvitem.mask = LVIF_IMAGE|LVIF_TEXT; 
lvitem.iItem = 0; 
lvitem.pszText = ""; 
lvitem.iImage = 0; 
lvitem.iSubItem = 12; 
m_showlist.InsertItem(&lvitem); 
这样做只能插入第一列,郁闷啊 不能再其他列插入吗?谁有更好的办法吗?或者给我讲解下Xlistcontrol里的checkbox的方法实现过程也行啊,求大侠们帮忙啊

解决方案 »

  1.   

    方法:为列表框(CListCtrl)多加一个LVS_EX_CHECKBOXES风格
     m_list.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES);
     添加的项(即“行”)的第一列总会在项目名前出现一个复选框(添加项后才能看到复选框)
     m_list.InsertColumn(0,"选取",LVCFMT_LEFT,50);        //添加列标题
     m_list.InsertColumn(1,"1",LVCFMT_LEFT,50);
     m_list.InsertColumn(2,"2",LVCFMT_LEFT,50);
     m_list.InsertColumn(3,"3",LVCFMT_LEFT,50); m_list.InsertItem(0,"");   //添加项(即行标题)
     m_list.InsertItem(1,"");
     
     m_list.SetItemText(0,1,"sdf");
     m_list.SetItemText(1,0,"sdf");  //设置项的各列数据时也可更改行标题,即行的第一列的文字
     m_list.SetItemText(1,1,"sdf");
     m_list.SetItemText(1,2,"sdf");
     m_list.SetItemText(1,3,"sdf");/**********************************************************************************
    也可以使用以下方法设置数据  m_list.SetBkColor(RGB(255,255,255));     //设置背景
       m_list.SetTextBkColor(RGB(255,255,255));  
     
       //设置list对话框的列   
       LV_COLUMN   lvc;     lvc.mask=LVCF_TEXT|LVCF_SUBITEM|LVCF_WIDTH|LVCF_FMT;  
       lvc.fmt=LVCFMT_LEFT;  
       
       lvc.iSubItem=0;  
      lvc.pszText=_T("A");  
       lvc.cx=50;  
       m_list.InsertColumn(1,&lvc);  
       
       lvc.iSubItem=1;  
       lvc.pszText=_T("B");  
       lvc.cx=50;  
       m_list.InsertColumn(2,&lvc);
      

  2.   

     标准listcontrol 只能设置第一列有checkbox
    要在其他列有需要扩展
      

  3.   

    可以参考那些在listcontrol上加上按钮,下拉编辑框的那些重写的类
      

  4.   

    http://www.codeproject.com/KB/list/LVChecked.aspx查考下这个,然后改改