1.新建对话框工程Test,在对话框上放上ListCtrl控件IDC_LIST1,连接变量名m_list,增加代码:

BOOL CTestDlg::OnInitDialog()
{
//
        m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    m_list.SetBkColor(RGB(240,255,240));
    m_list.SetTextColor(RGB(0,0,255));
//---------------------------------------------
       //插入列字段
    m_list.InsertColumn(0,"学号",LVCFMT_LEFT,100);
    m_list.InsertColumn(1,"姓名",LVCFMT_LEFT,100);
        //插入行项目
    m_list.InsertItem(0,"20010540519");
    m_list.InsertItem(1,"20010540520");
    m_list.InsertItem(2,"20010540521");
        //插入行内容
    m_list.SetItemText(0,1,"宫奇");
    m_list.SetItemText(1,1,"杨建敏");
    m_list.SetItemText(2,1,"张威");

return TRUE;  
}

2.新建对话框IDD_EDIT, 用来做修改、删除、添加记录等,添加2个编辑框,分别连接变量m_StudentID和m_StudentName,为它创建新的类CEditDlg,基类是CDialog;
3.为了使用上面的CEditDlg类  ,在TestDlg.cpp里的 #endif 之后加入#include "EditDlg.h";然后在主对话框上加入4个按钮修改(IDC_CHANGE)、删除(IDC_DELETE)、添加(IDC_ADD)、保存(IDC_SAVE),然后添加他们的响应函数如下:

void CTestDlg::OnChange() 
{    //得到选择项的索引值
    POSITION pos=m_list.GetFirstSelectedItemPosition();
    m_nIndex=m_list.GetNextSelectedItem(pos);

if(m_nIndex==-1)
    {
        MessageBox("请选择一项再修改!","提示",MB_ICONINFORMATION);
        return;
    }

CEditDlg edlg;
    edlg.m_StudentID=m_list.GetItemText(m_nIndex,0);
    edlg.m_StudentName=m_list.GetItemText(m_nIndex,1);
    if(edlg.DoModal()==IDOK)
    {
        m_list.SetItemText(m_nIndex,0,edlg.m_StudentID);
        m_list.SetItemText(m_nIndex,1,edlg.m_StudentName);
    }
}

void CTestDlg::OnDelete() 
{    
    POSITION pos=m_list.GetFirstSelectedItemPosition();
    m_nIndex=m_list.GetNextSelectedItem(pos);

if(m_nIndex==-1)
    {
        MessageBox("请选择一项!","提示",MB_ICONINFORMATION);
        return;
    }
    m_list.DeleteItem(m_nIndex);
//下面这2句的作用是刷新当前所指记录位置,以便连续删除
//    UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
//    m_list.SetItemState(m_nIndex-1, flag, flag);    
}

void CTestDlg::OnAdd() 
{
    CEditDlg edlg;
    if(edlg.DoModal()==IDOK)
    {
        if(edlg.m_StudentID=="")            
            return;        
        m_nIndex=m_list.GetItemCount();
        m_list.InsertItem(m_nIndex,edlg.m_StudentID);    
        m_list.SetItemText(m_nIndex,1,edlg.m_StudentName);        
    }
}

void CTestDlg::OnSave() 
{    
    CStdioFile sf;
    if(sf.Open("资料.txt",CFile::modeCreate | CFile::modeWrite))
    {
        CString strOut;
        strOut="学号\t\t姓名\r\n";
        sf.WriteString(strOut);
        for(int i=0;i<m_list.GetItemCount();i++) 
        {
            strOut=m_list.GetItemText(i,0) + "\t"+m_list.GetItemText(i,1)+"\r\n";
            sf.WriteString(strOut);
        }    
        sf.Close();
        MessageBox("保存成功!","提示",MB_ICONINFORMATION);
    }
    else
        MessageBox("保存失败!","提示",MB_ICONINFORMATION);  
}

好了,现在就编译运行吧~你看到的结果应该是(现在上传不了图,暂时,以后会贴上来的)

转载于:https://www.cnblogs.com/yjm0105/archive/2005/05/17/157327.html

列表控件ListCtrl的使用相关推荐

  1. MFC之列表控件ListCtrl

    MFC列表控件ListCtrl如图: 列表控件ListCtrl样式属性(风格)有: Icon大图标,SmallIcon小图标.List列表.Report报告 ,但今天只谈Report报告样式: 一:基 ...

  2. wxpython列表控件listctrl设置某行颜色_wxPython ListCtrl:写入彩色纹理

    在尝试将字符串写入listcrl时,我无法完全理解逻辑.这是正确的方法吗?在self.rightPanel = wx.ListCtrl(spliter, -1, style=wx.LC_REPORT) ...

  3. 设置ListCtrl列表控件其中某一行的字体和背景颜色

    设置ListCtrl列表控件其中某一行的字体和背景颜色,可以最终达到如下效果: 操作步骤如下所示: 1.先添加一个自定义消息 ON_NOTIFY ( NM_CUSTOMDRAW,IDC_V_H264_ ...

  4. 虚拟列表控件---加载大数据行

    平常所用到的列ListView/ListCtrl控件,都是只有行至几百行数据,直至今日,在项目中遇到了上10W量级数据条,终于感觉到普通加载的艰辛,遂到网上乱找一通,发现大同小异,转载了这篇比较详细的 ...

  5. MFC 列表控件CListCtrl加载类似QQ界面的头像与文字

    本文主要讲述使用VS2012 MFC的CListCtrl(列表)控件加载类似于QQ界面的图片与文字数据.主要通过CListCtrl::InsertColumn.InsertItem.SetItemTe ...

  6. Android列表控件选项中添加进度框ProgressBar实现

        今天有时间就学习了下在ListView.GridView列表项中清加ProgressBar,小马用最简单的代码实现可以通用的功能,人人都能看懂,哈哈,直接说下,如果你的适配器getView方法 ...

  7. 免费超高速卡片式病人基本信息列表控件

    C#写的免费超高速卡片式病人基本信息列表控件,以卡片的方式列出病人基本信息.性能卓越,瞬间填充上千个项目. 下载地址http://files.cnblogs.com/xdesigner/Patient ...

  8. 确定多重选择列表控件 (List Control) 中的选定内容

    确定多重选择列表控件 (List Control) 中的选定内容 依次通过控件的 Items 集合,分别测试每一项的 Selected 属性. 下面的示例显示如何测试多重选择 ListBox 控件(名 ...

  9. [翻译]Chameleon介绍(3) : 列表控件

    [原文]http://getben.com/archive/2007/01/11/introduction-to-chameleon-list-base-controls.aspx 这篇文章属于我的文 ...

最新文章

  1. DataGirdView 编辑项时的验证
  2. cors spring_Spring,REST,Ajax和CORS
  3. mac mysql5.7.9 dmg_Mac 安装 mysql5.7
  4. ASP.NET Core MVC 之区域(Area)
  5. NSHashTable and NSMapTable
  6. java复制arraylist_Java - 复制ArrayList
  7. 清华大学发布《人工智能芯片技术白皮书(2018)》
  8. 【云驻共创】华为云文字识别服务的体验之旅
  9. 基于Simulink的汽车电子驻车系统仿真分析
  10. PIN/PAD Design in SoC - 2 (待续)
  11. 历时90天,2017 CCF大数据与计算智能大赛(BDCI)决赛落幕
  12. VSCode 即时英文翻译插件 【翻译(英汉词典)】
  13. 创建mysql视图索引_mysql 创建索引和视图
  14. DSM到DTM的转换——基于PCI Geomatica
  15. recovery 工作流程
  16. python炒股难度_诺贝尔奖得主教你如何分配炒股仓位 | python量化系列
  17. 数学建模之规划1——线性规划
  18. Mongodb访问控制
  19. 五十一个经典小故事2
  20. Android 定位的实现

热门文章

  1. P2774 方格取数问题
  2. 韩顺平 servlet 笔记 第5讲
  3. CSS样式中” 大于号”
  4. 使用C#实现Morse码的输出
  5. 神经网络的收敛标准有最优值吗?
  6. [cpp]c++中的 _t 类的数据类型
  7. 机器人焊枪动作与编程实验_机器人编程实验报告.pdf
  8. linux7开启ipmi,通过IPMI安装CentOS7教程
  9. python django并发访问挂掉,解决django高并发时数据库连接量过大的问题(实现连接池的方法)...
  10. 4.2 数据集划分-机器学习笔记-斯坦福吴恩达教授