【前话】

编译原理的第一个实验——词法分析器验收时,老师要求最后的结果用GUI的形式表现出来。想想确实,黑白的控制台应用程序界面在用户操作时的确不如GUI 友好。GUI界面也算是大势所趋。我现在掌握三种语言的基本语法——c/c++、Java和python。python好久之前学过然后没用就忘记了,最近想写网络爬虫才又重新去看,对于python写GUI也是一窍不通,不做考虑。自认为Java写GUI比较方便,但是实验代码已经用c写完了,所以最后 决定用mfc做这个GUI。

到了大二下陆陆续续的做了一些mfc,每次用一个新控件都是网上各种找然后XJBG一下就完成了。每次要用的时候又要找,所以打算每学习一个控件就就写个随笔系统地记录一下使用方法和心得。

废话不说,下面上list control的用法。

【list control】

在console中可以用#include<iomanip>的setw()来设置输出的格式,原本认为mfc里的控件edit control里也这样输出一下就可以了,结果做出来的效果是这样的:

看来用setw()方法不能得到想要的效果,而且edit control里的文本可以随意更改,所以想找一个类似列表的控件作为输出显示。

最后得到这样的效果,就要用到今天要介绍的list control。

拖到对话框后的显示是这样的:

选中控件,修改将外观中的View项从Icon改为Report,再调整大小。

然后右键->类向导->成员变量,设置如下图:

接下来在CProjectNameDlg.cpp文件的OnInitDialog()函数中初始化list的列属性并进行设置:

        DWORD dwStyle = m_list.GetExtendedStyle();
        dwStyle |= LVS_EX_FULLROWSELECT;
        dwStyle |= LVS_EX_GRIDLINES;
        m_list.SetExtendedStyle(dwStyle);

    第一句得到m_list的风格。

    LVS_EX_FULLROWSELECT为整行选中,当鼠标点击某个单元式那一整行都选中。

    LVS_EX_GRIDLINES为添加网格线。

    第四句将我们配置的风格添加到m_list。

接下去设置每列的属性:

        m_list.InsertColumn(, _T();
        m_list.InsertColumn(, _T();
        m_list.InsertColumn(, _T();
        m_list.InsertColumn(, _T();
        m_list.InsertColumn(, _T(); 

    我按照自己的理解来说下函数的用法。InsertColumn(设置的列是第几列,列的属性名,属性名的格式,列宽)。
    然后就是在触发某个控件后在list control中显示。这里触发可以是按了某个按钮或者读入了某个文件Balabala...

        m_list.InsertItem(n, CStr1);
        m_list.SetItemText(n, , CStr2);
        m_list.SetItemText(n, , CStr3);
        m_list.SetItemText(n, , CStr4);
        m_list.SetItemText(n, , CStr5); 

    InsertItem(n, CStr)  是将CStr加入第n行第0列。这里n也是从0开始计的。
    SetItemText(n, line, CStr)  是在第n行第line列加入CStr。但是如果用SetItemText加入第0列的元素是没效果的

我的理解是先用InsertItem()申请了一行的list可用,后面的才可以用SetItemText()加入。

两个函数插入list中的元素必须是CString类型。我一般都是把所有东西转化成string,然后用CString CStr(string.c_str())来解决的。。。

然后CY告诉我一个很好用的东西:stringstream。以后用的多了也写篇随笔总结下好了。

最后是list control的清空方法:m_list.DeleteAllItems()。

mfc控件——list control的使用的更多相关文章

  1. MFC控件Slider Control的使用

    写MFC界面程序时,今天恰好用到Slider控件,做一个小小的记录. 步骤 1.在工具栏中添加Slider Control控件: 2.在控件上右键->添加变量(Add Variable...), ...

  2. VS2010/MFC常用控件:图片控件Picture Control

    图片控件Picture Control 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到 ...

  3. VS2010/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)

    前面一节讲了树形控件Tree Control的简介.通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件的创建.CTreeCtrl类的主要成员函数和应用实例. 树形控件的创建 MFC为树形控件提 ...

  4. VS2010/MFC编程入门之三十(常用控件:树形控件Tree Control 上)

    前面两节为大家讲了列表视图控件List Control,这一节开始介绍一种特殊的列表--树形控件Tree Control. 树形控件简介 树形控件在Windows系统中是很常见的,例如资源管理器左侧的 ...

  5. VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)

    上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...

  6. VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control)

    上一节中鸡啄米讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文 ...

  7. VS2010/MFC编程入门之二十八(常用控件:列表视图控件List Control 上)

    前面一节中,鸡啄米讲了图片控件Picture Control,本节为大家详解列表视图控件List Control的使用.      列表视图控件简介 列表视图控件List Control同样比较常见, ...

  8. Visual studio C++ MFC之列表控件CListCtrl Control

    背景 本篇旨在MSDN帮助文档下总结列表控件CListCtrl Control的使用,并列出碰到的具体问题. 正文 列表型控件List Control的类是ClistCtrl,具体成员对象详见链接,以 ...

  9. Visual studio C++ MFC之树形控件Tree Control

    背景 本篇旨在MSDN帮助文档下总结树形控件Tree Control的使用,并列出碰到的具体问题. 正文 树形控件Tree Control的类则是CTreeCtrl,具体成员对象详见链接,以下则描述一 ...

随机推荐

  1. SQL 表 和字符串 互转 (行列互转)

    -- 表转字符串 )) ,,'') --字符串转表 ),)) ,) )) AS BEGIN DECLARE @StartIndex INT --开始查找的位置 DECLARE @FindIndex I ...

  2. UIView的使用

    UIView是iOS中所有视图的基类,表示屏幕上的一块矩形区域. UIView的基本属性包括: 1.frame,控制视图的显示位置和大小 2.backgroundColor,控制视图的背景颜色 3.a ...

  3. LVS+Keepalived负载均衡配置

    简介 lvs一般是和keepalived一起组合使用的,虽然也可以单独使用lvs,但配置比较繁琐,且可用性也没有前者高. lvs和keepalived组合使用后,配置lvs的VIP和负载均衡就都在ke ...

  4. 黄聪:PHP页面跳转如何实现延时跳转

    php在用header重定向的时候,可以设置下延时跳转,代码如下: header("Refresh:5;url=index.php");

  5. mybatis配置优化

    1.加入日志log4j 1)加入jar包:log4j-1.2.17.jar 2)加入log4j配置文件: 可以使properties或者xml形式 log4j.rootLogger = DEBUG,C ...

  6. for语句

    一.for语句的格式格式1:for (控制变量初始化表达式;条件表达式;增量表达式)  语句1; 格式2:for (控制变量初始化表达式;条件表达式;增量表达式){ 语句1;  语句2;  -} 注意 ...

  7. POJ解题经验交流

    感谢范意凯.陈申奥.庞可.杭业晟.王飞飏.周俊豪.沈逸轩等同学的收集整理.   题号:1003 Hangover求1/2+1/3+...1/n的和,问需多少项的和能超过给定的值 类似于Zerojudg ...

  8. Highcharts——大气好用的图标制作工具

    Highcharts是一款纯javascript编写的图表库,能够很简单便捷的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.曲线图.面积图.柱状图.饼图.散点图等多达 ...

  9. java se the operation is not applicable to the current selection

    当新建某的类时,需要自动构建 set get方法时. 我们一般 会直接让Myeclipse自动生动.偶尔 .他会犯2. the operation is not applicable to the c ...

  10. NHibernate系列文章九:NHibernate对象二级缓存上

    摘要 NHibernate的二级缓存由SessionFactory管理,由所有Session共享. NHibernate缓存读取顺序: 首先从一级缓存中读取,如果一级缓存对象存在,则读取一级缓存对象并 ...