CListView使用经验

1、如果创建工程时没有使用文档视图结构,那么需要将CChildView  m_wndView;改为CChildView  *m_wndView。

2、不能使用ON_WM_PAINT这一消息映射,否则插入进去的Item会不显示,因为系统会调用onPaint函数绘制图形结构。

3、设置报表格式按如下方式

    CListCtrl &listCtrl = GetListCtrl();//     ModifyStyle(0,LVS_REPORT);

    listCtrl.ModifyStyle(0,LVS_REPORT);

    listCtrl.SetExtendedStyle(LVS_REPORT   |   LVS_EX_FULLROWSELECT   |   LVS_EX_GRIDLINES); //设置扩展风格

4、插入数据时

    listCtrl.InsertColumn(0,_T("Name"),LVCFMT_LEFT,200);
    listCtrl.InsertColumn(1,_T("Palce"),LVCFMT_LEFT,200);

    LVITEM   lvItem;
    int   nItem;
    lvItem.mask=LVIF_TEXT;
    lvItem.iItem=0;
    lvItem.iSubItem=0;
    lvItem.pszText= _T(" ");
    nItem=listCtrl.InsertItem(&lvItem);

    listCtrl.SetItemText(nItem,0,_T("xxx"));
    listCtrl.SetItemText(nItem,1, _T("test1 "));

5、消息映射

ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, OnItemchanged)
    ON_NOTIFY_REFLECT(NM_CLICK, onItemClicked)

 

6、设置图标为首列,代替checkbox

//关联图标列表

    CBitmap bm;
    m_imagelist.Create(16,16,ILC_COLOR8,0,4);
   
    //加载状态为0的图标,表示没有选中
    CString strBitmapFile = g_strCurrentDir + _T("CheckBoxIcon/");
    strBitmapFile += _T("bitmap0.bmp");
    HBITMAP   hBitmap=(HBITMAP)::LoadImage(NULL,strBitmapFile,
        IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
    bm.Attach(hBitmap);
    m_imagelist.Add(&bm,RGB(255,0,0));

 GetListCtrl().SetImageList(&m_imagelist, LVSIL_SMALL);  

//设置Item的图标

CListCtrl &listCtrl = GetListCtrl();
   
    //设置图标
    LV_ITEM item;
    item.mask=LVIF_IMAGE;
    item.iItem = iItem;
    item.iSubItem = 0;
    listCtrl.GetItem(&item);


    //checkType为0-4之间的数值,为上面关联的图标列表的序号
    item.iImage = checkType;
    listCtrl.SetItem(&item);
    //设置附加数据,后面通过获取数值来得到当前的状态
    listCtrl.SetItemData(iItem, checkType);

 7、优秀开源

 http://www.codeproject.com/KB/list/ReportControl.aspx 

http://www.codeproject.com/search.aspx?q=CListView&doctypeid=1&pgnum=2 

http://www.codeproject.com/KB/list/listcheckbox.aspx 

http://www.codeproject.com/KB/miscctrl/checkersctrl.aspx 

功能超级强大的XCListCtrl

http://www.codeproject.com/KB/list/xlistctrl.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值