程序代码如下:

BOOL CLCDemoDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

m_imagelist.Create(16,16,TRUE,2,2);
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_list.SetImageList(&m_imagelist,LVSIL_SMALL);

m_font.CreateFont(16, 0,0,0,FW_NORMAL, 0,0,0,
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial");
m_list.SetFont(&m_font);

/*-----------------------------------------------------------*/
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_list.SetBkColor(RGB(247,247,255));
m_list.SetTextColor(RGB(0,0,255));
m_list.SetTextBkColor(RGB(247,247,255));
m_list.InsertColumn(0, "学号", LVCFMT_LEFT, 110);
m_list.InsertColumn(1, "姓名", LVCFMT_LEFT, 130);
m_list.InsertColumn(2, "成绩", LVCFMT_LEFT, 47);

m_list.InsertItem(0,"2002112105");
m_list.SetItemText(0,1,"程红秀");
m_list.SetItemText(0,2,"96");

m_list.InsertItem(1,"2002112126");
m_list.SetItemText(1,1,"符中辉");
m_list.SetItemText(1,2,"85");

m_list.InsertItem(2,"2002112125");
m_list.SetItemText(2,1,"王斌年");
m_list.SetItemText(2,2,"95");

m_list.InsertItem(3,"2002112103");
m_list.SetItemText(3,1,"袁浩");
m_list.SetItemText(3,2,"92");

return TRUE; // return TRUE unless you set the focus to a control
}

void CLCDemoDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
{
POSITION pos = m_list.GetFirstSelectedItemPosition();
m_nIndex = m_list.GetNextSelectedItem(pos); // 得到项目索引

*pResult = 0;
}

void CLCDemoDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)
{
POSITION pos = m_list.GetFirstSelectedItemPosition();
m_nIndex = m_list.GetNextSelectedItem(pos); // 得到项目索引

CEditDlg ed;
ed.m_strNo=m_list.GetItemText(m_nIndex,0);
ed.m_strName=m_list.GetItemText(m_nIndex,1);
ed.m_strScore=m_list.GetItemText(m_nIndex,2);

if(ed.DoModal()==IDOK)
{
m_list.SetItemText(m_nIndex,0,ed.m_strNo);
m_list.SetItemText(m_nIndex,1,ed.m_strName);
m_list.SetItemText(m_nIndex,2,ed.m_strScore);
}

*pResult = 0;
}

void CLCDemoDlg::OnButtonUp()
{
m_list.SetFocus();

if (m_nIndex == -1) //如果没有选择就返回
{
MessageBox("请选择一项再上移!","提示",MB_ICONINFORMATION);
return;
}

if (m_nIndex == 0) // 判断所选项是否位于行首
{
MessageBox("已经位于第一行!","提示",MB_ICONINFORMATION);
return;
}

// 提取所选列表项各列类容
CString str1, str2, str3;
str1 = m_list.GetItemText(m_nIndex, 0);
str2 = m_list.GetItemText(m_nIndex, 1);
str3 = m_list.GetItemText(m_nIndex, 2);

// 删除所选列表项
m_list.DeleteItem(m_nIndex);

// 在m_nIndex-1位置处插入上面所删列表项的各列类容
m_list.InsertItem(m_nIndex-1, str1);
m_list.SetItemText(m_nIndex-1, 1, str2);
m_list.SetItemText(m_nIndex-1, 2, str3);
m_nIndex--;

// 使得m_nIndex-1位置处项目高亮显示并获得焦点
UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
m_list.SetItemState(m_nIndex, flag, flag);
}

void CLCDemoDlg::OnButtonDown()
{
m_list.SetFocus();

if (m_nIndex == -1) //如果没有选择就返回
{
MessageBox("请选择一项再下移!","提示",MB_ICONINFORMATION);
return;
}

if (m_nIndex == m_list.GetItemCount()-1) // 判断所选项是否位于行尾
{
MessageBox("已经位于最末行!","提示",MB_ICONINFORMATION);
return;
}

CString str1, str2, str3;
str1 = m_list.GetItemText(m_nIndex, 0);
str2 = m_list.GetItemText(m_nIndex, 1);
str3 = m_list.GetItemText(m_nIndex, 2);

m_list.DeleteItem(m_nIndex);

// 在m_nIndex+1位置处插入上面所删列表项的各列类容
m_list.InsertItem(m_nIndex+1, str1);
m_list.SetItemText(m_nIndex+1, 1, str2);
m_list.SetItemText(m_nIndex+1, 2, str3);
m_nIndex++;

// 使得m_nIndex+1位置处项目高亮显示并获得焦点
UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
m_list.SetItemState(m_nIndex, flag, flag);
}

void CLCDemoDlg::OnEdit()
{
POSITION pos = m_list.GetFirstSelectedItemPosition();
m_nIndex = m_list.GetNextSelectedItem(pos); // 得到项目索引

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

CEditDlg ed;
ed.m_strNo=m_list.GetItemText(m_nIndex,0);
ed.m_strName=m_list.GetItemText(m_nIndex,1);
ed.m_strScore=m_list.GetItemText(m_nIndex,2);

if(ed.DoModal()==IDOK)
{
m_list.SetItemText(m_nIndex,0,ed.m_strNo);
m_list.SetItemText(m_nIndex,1,ed.m_strName);
m_list.SetItemText(m_nIndex,2,ed.m_strScore);
}
}

void CLCDemoDlg::OnAbout()
{
CAboutDlg dlg;
dlg.DoModal();
}

void CLCDemoDlg::OnExit()
{
PostMessage(WM_CLOSE,0,0);
}

void CLCDemoDlg::OnRclickList(NMHDR* pNMHDR, LRESULT* pResult)
{
CPoint pt;
::GetCursorPos(&pt);

CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu* pMenu=menu.GetSubMenu(0);
pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this,NULL);

*pResult = 0;
}

void CLCDemoDlg::OnAdd()
{
CEditDlg ed;
if(ed.DoModal()==IDOK)
{
int nn=m_list.InsertItem(m_list.GetItemCount(),ed.m_strNo);
m_list.SetItemText(nn,1,ed.m_strName);
m_list.SetItemText(nn,2,ed.m_strScore);
}
}

void CLCDemoDlg::OnDel()
{
POSITION pos = m_list.GetFirstSelectedItemPosition();
m_nIndex = m_list.GetNextSelectedItem(pos); // 得到项目索引

if(m_nIndex==-1)
{
MessageBox("请选择一项在删除!","提示",MB_ICONINFORMATION);
return;
}

m_list.DeleteItem(m_nIndex);

UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
m_list.SetItemState(m_nIndex-1, flag, flag);

}

void CLCDemoDlg::OnSave()
{
CStdioFile sf;
if(sf.Open("资料.txt",CFile::modeCreate | CFile::modeWrite))
{
CString strOut;
strOut="/r/n学号/t/t姓名/t/t成绩/r/n";
sf.WriteString(strOut);

for(int i=0;i {
strOut=m_list.GetItemText(i,0) + "/t"+m_list.GetItemText(i,1)+"/t "+m_list.GetItemText(i,2) +"/r/n";
sf.WriteString(strOut);
}
sf.Close();
MessageBox("保存成功!","提示",MB_ICONINFORMATION);
}

else
MessageBox("保存失败!","提示",MB_ICONINFORMATION);
 

CListCtrl 使用演示的例子相关推荐

  1. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM中的查询

    前文回顾 前面的文章一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的基本操作一文给大家介绍了如果使用ORM实现数据的读取.插入.更新与删除基本业务也讲解了ORM开发基 ...

  2. HTML5讲解与演示转载整理

    ZHENGLIL weiking 2010.12.06 html Html5从入门到精通 上周我们总结会上面主题的第二部分就是关于Html5的,后来自己想总结一下Html5 的支持列表,写了许久,无果 ...

  3. 一步一步解读神经网络编译器TVM(一)——一个简单的例子

    @TOC 前言 这是一个TVM教程系列,计划从TVM的使用说明,再到TVM的内部源码?为大家大致解析一下TVM的基本工作原理.因为TVM的中文资料比较少,也希望贡献一下自己的力量,如有描述方面的错误, ...

  4. Cordova入门系列(三)Cordova插件调用

    上一章我们介绍了cordova android项目是如何运行的,这一章我们介绍cordova的核心内容,插件的调用.演示一个例子,通过cordova插件,去调用摄像头. 一.插件的安装以及基本信息: ...

  5. linux mpp集群环境,Linux环境下,DM8-MPP两节点集群搭建

    目录 1.主备库,监视器信息部署 2.初始化数据库实例 3.启停数据库 4.数据库备份与还原 5.检查.修改和创建配置文件 6.启动数据库,修改数据库模式和OGUID 8.配置守护进程 9.配置监视器 ...

  6. git之reset图解

    https://blog.csdn.net/longintchar/article/details/81843048 1.三棵树. 此时如果我们运行 git status,会发现没有任何改动,因为现在 ...

  7. JSP笔记-页面重定向

    JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准.JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTM ...

  8. 用于Fluent Design的UWP社区工具包蓄势待发

    Microsoft继续为即将推出Windows 10"秋季创作者更新"(FCU,Fall Creators Update)在做着准备工作,其中部分工作是目前正在开展的开发者工具和资 ...

  9. (转载)如何学好iphone游戏开发

    转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...

最新文章

  1. 笑岔气!一个程序员的水平能差到什么程度?
  2. vue父子组件写法,数据传递,顺便封装 element-ui的弹窗组建
  3. mysql集群数据引擎_MySQL数据引擎
  4. wxWidgets:wxFileCtrlEvent类用法
  5. Linux系统下不同机器之间拷贝文件的方法
  6. Git:小乌龟报错no supported authentication methods avaiable
  7. 购买女装摩托车(踏板车)
  8. 如何使用JMeter发送Post请求
  9. sublime的Package Control的安装及使用
  10. android内核读取file文件
  11. 数据库注册两种方式的比较
  12. Mac电脑:调整 VMware中Windows10 屏幕分辨率(解决win10与Mac界面切换后,分辨率改变问题)
  13. 下载《阿里巴巴Java开发手册(详尽版)1.4.0》 与 码出高效,码出质量
  14. 解构语音交互产品--人工智能AI技术
  15. 计算机绘图中有六种方法绘圆,绘图用品和制图方法
  16. 别傻干了,刚离职的同事分享了他常用的19个私活平台!
  17. 基于java实现下载excel
  18. SPAN_EXCLUSIVE_INCLUSIVE用法、区别
  19. win10/neovim中文输入法切换
  20. [FPGA]关于Xilinx与Altera两家FPGA结构的对比

热门文章

  1. Linux下安装ElasticSearch-head插件
  2. 互联网日报 | 6月12日 星期六 | BOSS直聘正式登陆纳斯达克;腾讯回应“试点强制6点下班”;数据安全法9月1日起实施...
  3. 2021凯络趋势报告
  4. oracle查询语句子句,Oracle 查询执行顺序
  5. 专题导读:教育大数据
  6. 欢乐的跳(洛谷P1152题目链接,Java语言描述)
  7. 【面向对象】面向对象程序设计测试题1-Java语言的发展与特性测试题
  8. rabbitmq中文教程python版 - Topics
  9. CentOS 6.9编译安装新版本内核
  10. NYOJ47过河问题