MFC_CListCtrl 列表控件(常用)

//感谢猎豹网校的视频
MFC class : CListCtrl
四种视图:大图标/小图标/列表/详细信息
CImageList : 图像列表控件,用于图像保存,多个图像亦可,用作大小图标显示。
最常见的列表控件,就是 平时见到的Windows文件资源管理器重看到的文件列表。
1.开始工作吧
这里写图片描述
2.添加“List Control””Button”“Combo Box” 制作界面。
IDC_LIST IDC_BTN_ADD IDC_BTN_DEL IDC_CMB_VIEW
组合框用于选择视图样式
3.初始化对话框程序,初始化列表空间

    // TODO: 在此添加额外的初始化代码
    //列表控件实质是个表格
    //现在给其增加表头,设置样式,添加行
    m_list.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);//共有4中样式,REPORT为详细信息,第一个参数是固定的
    m_list.InsertColumn(0,_T("第一列"),LVCFMT_LEFT,120);//添加表头,第一列/表头名字/左对齐/宽度
    m_list.InsertColumn(1,_T("第二列"),LVCFMT_LEFT,120);//添加表头,第二列
    //windows资源管理器前都含有图标//在此之前应在Dlg.h添加图片列表控件的公共 类成员
    m_ilLarge.Create(IDB_LARGEDOC,32,1,RGB(255,0,0));//最后一个参数设置颜色,第一个参数表示图像列表控件变量名,第二个参数为32*32,第三个参数是图片ID
    m_ilSmall.Create(IDB_SMALLDOC,16,1,RGB(255,0,0));//mm_ilLarge为图片列表控件变量
    m_list.SetImageList(&m_ilLarge,LVSIL_NORMAL);//NORMAL大图标
    m_list.SetImageList(&m_ilSmall,LVSIL_SMALL); //SMALL小图标

    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

在Dlg.h添加图像空间类成员,在文件夹中添加图像资源(将32*32,16*16复制到res文件夹中)

// 实现
protected:
    HICON m_hIcon;
    //列表控件带图标,大小图标(图像列表)
    CImageList m_ilLarge;//既然叫图像列表空间,里面可以放置很多图片
    CImageList m_ilSmall;//小图标;图标大小在OnInitDlg()中定义

    // 生成的消息映射函数

编辑“添加”按钮的处理函数

void Clb012Dlg::OnBnClickedBtnAdd()
{
    // TODO: 在此添加控件通知处理程序代码
    int nCount = m_list.GetItemCount();//获得列表控件的目前总行数
    CString strText;
    strText.Format(_T("第%d行,第1列"),nCount+1);
    m_list.InsertItem(nCount,strText,0);//0代表第一个图标,之前也只初始化了一个图标,序号为0
    strText.Format(_T("第%d行,第2列"),nCount+1);
    m_list.SetItemText(nCount,1,strText);//1代表第二列,这个函数不再是Insert,设置第二列信息。第1列和第2列是成对出现的。前面已经插入了一条ITEM,第2个命令是补充。
}

编辑“删除”按钮的处理函数

void Clb012Dlg::OnBnClickedBtnDel()
{
    // TODO: 在此添加控件通知处理程序代码
    int nCount = m_list.GetItemCount();//先计算列表中总共多少行
    for(int i = nCount; i>= 0; i--)   //删除操作,从后往前工作
    {
        if(m_list.GetItemState(i,LVIS_SELECTED) == LVIS_SELECTED)//状态判断,是否被选中,这样任何一条被选中都可以进行相应的操作
            m_list.DeleteItem(i);
    }
}

设置组合框
属性表——data设置为“大图标;小图标;列表;详细信息”(;分割,英文输入法)
——sort 设置为“False”
——type 设置为“Drop List”下拉列表
插曲:昨天可以,但是同样程序今天报错。
“error RC2170:bitmap file xxx.png is not in 3.00 format”
原因是MS 对PNG格式支持不太好,建议使用 bmp格式。
解决方法还有:
修改如下代码中的BITMAP 为 PNG

//xxx.rc
/////////////////////////////////////////////////////////////////////////////
//
// PNG
//

IDB_LARGEDOC            PNG                  "res\\big.png"
IDB_SMALLDOC            PNG                  "res\\small.png"

/////////////////////////////////////////////////////////////////////////////

回到组合框,选中组合框,选择“CBN_SELCHANGE”消息,重写消息处理函数

void Clb012Dlg::OnCbnSelchangeCmbView()
{
    // TODO: 在此添加控件通知处理程序代码
    DWORD dwStyle;   //用于记录图标显示样式
    CComboBox *pView;
    pView = (CComboBox*)GetDlgItem(IDC_CMB_VIEW);//得到组合框对象。
    switch(pView->GetCurSel())//获得当前组合框选中的哪条 !!!其实是序号。
    {
    case 0:                     //0代表第一个,组合框中序号
        dwStyle = LVS_ICON;     //大图标
        break;
    case 1:
        dwStyle = LVS_SMALLICON;//小图标
        break;
    case 2:
        dwStyle = LVS_LIST;     //列表
    case 3:
        dwStyle = LVS_REPORT;   //详细信息
        break;
    default:
        break;
    }
    m_list.ModifyStyle(LVS_TYPEMASK,dwStyle);//改变样式;第一个参数是固定的,第二个是我们选择的。
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值