MFC-ListCtrl(列表控件)

效果如图:
Icon
MFC-ListCtrl(列表控件)_第1张图片
Small Icon
MFC-ListCtrl(列表控件)_第2张图片
List
MFC-ListCtrl(列表控件)_第3张图片
Report
MFC-ListCtrl(列表控件)_第4张图片

首先要在初始化对话框中设置ListCtrl的表头,正常图标,小图标
表头设置如下:

    //获取指向列表控件的指针
    CListCtrl* pLc = (CListCtrl*)GetDlgItem(IDC_LIST);
    //改变视图为详细信息(report)
    pLc->ModifyStyle(LVS_TYPEMASK, LVS_ICON);

    //插入表头
    pLc->InsertColumn(0, _T("第一列"), LVCFMT_LEFT,150);
    pLc->InsertColumn(1, _T("第二列"), LVCFMT_LEFT,150);

设置图标,我用的是32位和16的bmp位图,把它添加到资源中
然后在头文件中添加两个CImageList变量

    CImageList m_LagerIcon;
    CImageList m_SmallIcon;

接在在初始化对话框中进行加载

    //创建大图标
    m_LagerIcon.Create(IDB_BMP_LARGE, 32, 1, RGB(255, 0, 0));
    //创建小图标
    m_SmallIcon.Create(IDB_BMP_SMALL, 16, 1, RGB(255, 0, 0));

    pLc->SetImageList(&m_LagerIcon, LVSIL_NORMAL);//显示正常图标
    pLc->SetImageList(&m_SmallIcon, LVSIL_SMALL);//显示小图标

列表初始化已经完成,接着向列表添加行

    int iCount = m_List.GetItemCount();//获取列表中有多少行
    CString strText;
    strText.Format(_T("第 %d 行,第 1 列"), iCount + 1);
    m_List.InsertItem(iCount, strText); //第一列的行要用插入
    strText.Format(_T("第 %d 行,第 2 列"), iCount + 1);
    //第二列以后就要用设置Item文本,第一个参数是行,第二个是列,第三个是插入的字符串
    m_List.SetItemText(iCount,1,strText);

接着可以删除列表中的项

    int iCount = m_List.GetItemCount();
    //可以多选然后删除
    for (int i = iCount; i >= 0; i--)
    {
        if (m_List.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
        {
            m_List.DeleteItem(i);//选中了就删除
        }
    }

接下来就是改变列表视图,我用了个组合框,当选中某一个View的时候就显示那个View.右键单击组合框添加事件

void CMFCTESTDlg::OnCbnSelchangeCombo1()
{
    // TODO: 在此添加控件通知处理程序代码
    //当前选中的View的索引
    int iIndex = m_combox.GetCurSel();
    switch (iIndex)
    {
    case 0:  //正常图标显示
        m_List.ModifyStyle(LVS_TYPEMASK, LVS_ICON);
        break;
    case 1:  //小图标显示
        m_List.ModifyStyle(LVS_TYPEMASK, LVS_SMALLICON);
        break;
    case 2:  //List显示
        m_List.ModifyStyle(LVS_TYPEMASK, LVS_LIST);
        break;
    case 3:  //详细信息显示
        m_List.ModifyStyle(LVS_TYPEMASK, LVS_REPORT);
        break;
    default:
        break;
    }
}

你可能感兴趣的:(MFC)