mfc控件——list control的使用

【前话】

编译原理的第一个实验——词法分析器验收时,老师要求最后的结果用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(0, _T(" "), LVCFMT_LEFT, 25);
        m_list.InsertColumn(1, _T("单词"), LVCFMT_LEFT, 60);
        m_list.InsertColumn(2, _T("二元序列"), LVCFMT_LEFT, 80);
        m_list.InsertColumn(3, _T("类型"), LVCFMT_LEFT, 80);
        m_list.InsertColumn(4, _T("位置(行,列)"), LVCFMT_LEFT, 100); 

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

        m_list.InsertItem(n, CStr1);
        m_list.SetItemText(n, 1, CStr2);
        m_list.SetItemText(n, 2, CStr3);
        m_list.SetItemText(n, 3, CStr4);
        m_list.SetItemText(n, 4, 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()。

时间: 2024-11-19 10:03:20

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

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

图片控件Picture Control 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了. 图片控件静态和动态加载图片 鸡啄米下面为大家演示如何为图片控件静态和动态加载位图图片. 1. 图片控件静态加载图片 1)创建一个基于对话框的MFC工程,名称设置为“

MFC控件编程:Tab Control

Tab控件的使用 1 插入Tab控件的数据项(标签) CTabCtrl::InsertItem 2 以Tab控件为父窗口创建对话框 3 调整对话框大小 4 在Tab控件的SELCHANGE消息处理函数中,根据当前选项的索引设置对话框的显示状态. 新建一个基于对话框的工程,拖放一个Tab Control控件,Ctrl+W 为之绑定一个控件变量m_wndTabCtrl 插入两个对话框资源做为标签页面,注意设置它们的样式为:child 和 无边框 双击对话框资源为他们添加相关类,父类使用默认CDial

MFC控件编程:旋转按钮、进度条和滑块控件

旋转按钮(微调按钮) : 对应的控件类是CSpinButtonCtrl 进度条:对应的控件类是CProgressCtrl 滑块:对应的控件类是CSliderCtrl 对这三个控件的操作都是同过与之相关联的控件类完成的,并且这三个控件有极大的相似性,故这里放到一起 先认识下: Spin:            Progress:             Slider: 常用函数: SetRange()/GetRange(); // 设置.获取控件表示的范围 /* 设置控件的增量(步长) */ CS

MFC控件随对话框大小改变而改变

这也是我项目中碰到的问题,要让对话框中的控件随着对话框大小的变化进行自动调整,一般的做法是在WM_SIZE的响应函数中对所有的控件用MoveWindow()或者SetWindowPos()设置其变化比例. 但是由于需要自己计算,并且还有各种系统引起的情况,比如WIN7里有个选项"拖动时显示窗口内容",选中与不选中导致对话框内容显示完全不一样,选中时错误,不选正确,确实让人头大. 如EasySize是一个很好解决方案,用一些宏封装了内部的实现机制,使用起来方便快捷.原文地址:http:/

VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法

在VC++ MFC编程中,我们常使用Picture Control图片控件来显示图像.下面简单归纳几种显示不同的方式: (实例可在我的CSDN资源中下载:http://download.csdn.net/detail/margin1988/8341525) 第一种.资源位图方式显示BMP图片 如果要显示的是一张BMP位图,则可以采用资源位图方式,具体步骤如下: (1)将BMP文件拷贝到工程的res目录下: (2)在对话框中添加一个Picture Control控件,例如:ID为IDC_STATI

VS2010-MFC(常用控件:图片控件Picture Control)

转自:http://www.jizhuomi.com/software/193.html 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了. 图片控件静态和动态加载图片 下面为大家演示如何为图片控件静态和动态加载位图图片. 1. 图片控件静态加载图片 1)

VS2010中如何实现自定义MFC控件

本文简要讲解在VS2010中怎样实现自定义MFC控件的知识,以下是分步骤说明. 一.自定义一个空白控件  1.先创建一个MFC工程 NEW Project-->MFC-->MFC Application-->name:  "CustomCtr"-->Application Type选择"Dialog based".  2.在窗口中添加一个自定义控件 Toolbox-->"Custom Control"-->属性

(八)树控件(Tree Control),标签控件(tab control)

树控件 基于对话框创建工程 // 01_TreeCtrlDlg.cpp : 实现文件 // #include "stdafx.h" #include "01_TreeCtrl.h" #include "01_TreeCtrlDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg

关于MFC控件删除出现“具有该ID的控件已存在”这样的情况的解决方案,详细,网上都没有这么详细的,我是“深受其害”,所以想将详细的方法分享出去。

网上关于MFC控件删除出现“具有该ID的控件已存在”这样的情况,在网上找了很多关于这方面的东西,但是都不是很全,也不容易弄明白.现在问我直接通过一个项目和图片的形式和大家一块分享一个这个解决方法(如有不对,请相互学习,qq1035169610): 1.创建一个MFC的项目,这里仅限于演示,就把项目名字称为“lu”吧. 2.下面就是将button控件添加到图形界面框中.结果如下: 3.只要将控件拉入到图形界面中,在Resource.h这个文件中创建宏,如下图所示: 4.那么开始改控件的名字和ID.