在VC中使用控件一直是件让我头痛的事件,从控件的创建到控件的操作管理,都得写一大堆代码,相比于Delphi/VB,实在是麻烦多了。其实在之前学习SDK的时候,就有想过专门花点儿时间来学习VC中控件的使用,但一直没空。最近准备写一个小工具,要用到ListCtrl控件,所以又不得不好好的恶补一翻。
我是在MFC的对话框模式下使用CListCtrl控件的,其实不管在SDK或文档/视图模式下,VC控件的使用都差不多,下面来好好的写写CListCtrl控件的使用笔记。
一、CListCtrl控件的创建
由于我是在MFC的对话框模式下使用CListCtrl控件的,所以只需要在控件栏上选择CListCtrl的图形按钮,接着添加到对话框中就行了。
二、CListCtrl控件样式的设置
第一步:在使用CListCtrl控件之前,首先需要为该控件关联一个变量(只针对于对话框模式):
CListCtrl m_BlogAccountList;
第二步:由于CListCtrl控件要做一些初始化操作,比如设置控件样式,设置控件的行列并填入一些数据。初始化操作的代码是在对话框的OnInitDialog事件中写入的。
默认情况下,CListCtrl控件的样式是非常简陋的,大多情况下我们都需要对CListCtrl控件的样式进行修改,比如设置为报表样式,可以进行整行选择等,如有需要还有调整CListCtrl控件的行高。诸如这些设置都需要用到CListCtrl控件的扩展样式,所以首先得了解这些扩展样式。
我在MSDN中没有找到CListCtrl控件的扩展样式资料,只好上百度百科找了找。
CListCtrl控件的扩展样式
LVS_EX_GRIDLINES //绘制表格线
LVS_EX_SUBITEMIMAGES//子项目图标列表
LVS_EX_CHECKBOXES //带复选框
LVS_EX_TRACKSELECT //自动换行
LVS_EX_HEADERDRAGDROP//报表头可以拖拽
LVS_EX_FULLROWSELECT //选择整行
LVS_EX_ONECLICKACTIVATE//单击激活
LVS_EX_TWOCLICKACTIVATE//双击激活
LVS_EX_FLATSB//扁平滚动条
LVS_EX_REGIONAL
LVS_EX_INFOTIP
LVS_EX_UNDERLINEHOT
LVS_EX_UNDERLINECOLD
LVS_EX_MULTIWORKAREAS//多工作区
对话框模式下创建的CListCtrl控件样式只有一个,就是WS_BORDER,而我需要为CListCtrl设置为报表样式,并能选择整行,下面就可以开始写代码了:
//通过GetWindowLong来获取CListCtrl已有的样式
DWORD dwStyle = GetWindowLong(m_BlogAccountList.m_hWnd, GWL_STYLE);
//在原有样式的基本上,添加LVS_REPORT扩展样式
SetWindowLong(m_BlogAccountList.m_hWnd, GWL_STYLE, dwStyle|LVS_REPORT);
//获取已有的扩展样式
DWORD dwStyles = m_BlogAccountList.GetExStyle();
//取消复选框样式
dwStyles &= ~LVS_EX_CHECKBOXES;
//添加整行选择和表格线扩展样式
m_BlogAccountList.SetExtendedStyle(dwStyles|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
通过以上四句代码,就已经能满足我的需求了。
三、为CListCtrl控件添加列
列的添加只需要用到LVCOLUMN结构体,所以需要先行了解了解。在MSDN中查到的LVCOLUMN结构体的定义如下:
typedef struct _LVCOLUMN {
UINT mask;
int fmt;
int cx;
LPTSTR pszText;
int cchTextMax;
int iSubItem;
#if (_WIN32_IE >= 0x0300)
int iImage;
int iOrder;
#endif
} LVCOLUMN, FAR *LPLVCOLUMN;
该结构体共有8个成员。
mask是用来设置LVCOLUMN结构体中哪些成员有效,其值可以为0。mask可设置的值如下:
LVCF_FMT fmt成员有效
LVCF_IMAGE iImage成员有效
LVCF_ORDER //以下略
LVCF_SUBITEM
LVCF_TEXT
LVCF_WIDTH
fmt成员是对CListCtrl控件列标题进行设置,比如列标题中文字的对齐方式,是否在列标题中显示图标等。
cx成员是设置列宽。
pszText成员是设置列标题文字
cchTextMax成员是设置标题文字的缓冲区大小
iSubItem成员是设置列索引
iImage成员是设置ImageList中的图像索引。
iOrder成员的作用未知。
下面进行添加列操作:
char *szColUmn[] = {"帐号", "密码"};
int nColWidth[] = {100, 100};
LVCOLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER;
lvc.fmt = LVCFMT_LEFT; //左对齐
for (int i = 0; i < 2; i++)
{
lvc.pszText = szColUmn[i];
lvc.iSubItem = i;
lvc.iOrder = i;
lvc.cx = nColWidth[i];
m_BlogAccountList.InsertColumn(i, &lvc);
}
四、为CListCtrl控件添加行
添加行的操作需要用到InsertItem和SetItemText属性,这个简单,就不详述了,看代码:
m_BlogAccountList.InsertItem(0, "abc");
m_BlogAccountList.SetItemText(0, 1, "abc");
m_BlogAccountList.SetItemText(1, 1, "123");
相关推荐
双击可编辑的VC++扩展型CListCtrl列表控件
双击可编辑的VC++扩展型CListCtrl列表控件 对CListCtrl列表控件进行了一个功能扩展,使它支持双击鼠标实现编辑主项(Item),也可以编辑子项(SubItem),并尽量符合CListCtrl的操作习惯。这个对VC的爱好者们应该很有用,必竟双击编辑已经让我们大部分人感觉很习惯了,因此这个功能的加入是符合注流的。
VC中CListCtrl用法详解
1. CListCtrl 风格<br /> LVS_ICON: 为每个item显示大图标<br /> LVS_SMALLICON: 为每个item显示小图标<br /> LVS_LIST: 显示一列带有小图标的item<br /> LVS_REPORT: 显示item详细资料<br /> 直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”<br /> 2. 设置listctrl 风格及扩展风格<br /> LO
VC的CListCtrl控件
VC的CListCtrl控件 收藏 1. CListCtrl 样式及设置2. 扩展样式设置3. 数据插入4. 一直选中Item5. 选中和取消选中Item6. 得到CListCtrl中所有行的checkbox的状态7. 得到CListCtrl中所有选中行的序号8. 得到item的信息9. 得到CListCtrl的所有列的header字符串内容10. 使CList
VC++中可编辑的CListCtrl实现
CEditableListCtrl类实现代码 EditableListCtrl.h文件 #if!defined(AFX_EDITABLELISTCTRL_H__D931FC67_33E0_4A71_8C4B_2E62FBCA6081__INCLUDED_) #defineAFX_EDITABLELISTCTRL_H__D931FC67_33E0_4A71_8C4B_2E62FBCA6081_
VC: [转]CListCtrl使用详解
1。先来介绍REPORT类型的CListCtrl:首先使用下面的语句设置CListCtrl的style: DWORD SetExtendedStyle( DWORD dwNewStyle );其中 LVS_EX_CHECKBOXES 表示添加CheckBox LVS_EX_FULLROWSELECT 表示选择整行 LVS_EX_GRIDLINES 表示添加表格线如果设置了LVS_EX_C
VC的CListCtrl控件使用方法
CListCtrl控件的扩展样式----------------------------------LVS_EX_GRIDLINES //绘制表格线LVS_EX_SUBITEMIMAGES//子项目图标列表LVS_EX_CHECKBOXES //带复选框LVS_EX_TRACKSELECT //自动换行LVS_EX_HEADERDRAGDROP//报表头可以拖拽LVS_EX_FULLROWSELECT //选择整行LVS_EX_ONECLICKACTIVATE//单击激活LVS_EX_TWOCLICKACT
VC/MFC中 CListCtrl控件的使用方法
http://blog.csdn.net/tg2003/archive/2009/04/10/4060322.aspx 在VC中使用控件一直是件让我头痛的事件,从控件的创建到控件的操作管理,都得写一大堆代码,相比于Delphi/VB,实在是麻烦多了。其实在之前学习SDK的时候,就有想过专门花点儿时间来学习VC中控件的使用,但一直没空。最近准备写一个小工具,要用到ListCtrl控件,
VC CListCtrl控件的上移和下移的通用方法
/**//**************************************************************************函数名称:CCommonFuntions::OnCListCtrlUp描 述: 对CListCtrl记录的上移操作输入参数: *listCtrl 对某个CListCtrl对象进行上移操作的CListCtrl指针
VC防止窗口及其控件(如CListCtrl)闪烁的简单方法(一组有用的宏)
本文主要是通过网上一篇文章提供的解决办法,整理了一组宏来实现防闪烁的。本文的重点是展示这个宏及其使用方法。 解决方法的原理请参考: http://www.cndes.cn/Designs/Program/200608052716.html 针对上文中提到的 “有效的进行搽除" 方法整理如下: 原文作者的思路是复写WM_ERASEBKGND消息处理函数OnEraseBk
解决列表框更新数据的时候的闪烁问题(VC防止窗口及其控件(如CListCtrl)闪烁的简单方法(一组有用的宏) )
VC防止窗口及其控件(如CListCtrl)闪烁的简单方法(一组有用的宏) 本文主要是通过网上一篇文章提供的解决办法,整理了一组宏来实现防闪烁的。本文的重点是展示这个宏及其使用方法。 解决方法的原理请参考: http://www.cndes.cn/Designs/Program/200608052716.html 针对上文中提到的 “有效的进行搽除" 方法整理如下:
【转帖】VC中使CListCTrl控件排序
http://blog.sina.com.cn/s/blog_5baa65b30100ahxm.htmlVC中使CListCTrl控件排序(2008-09-26 18:41:19)标签:杂谈 分类:软件开发 列表控件(CListCtrl)的排序功能不像其它直接调用API就可以完成的功能一样.它比较复杂.今天将我的一点体会简单地谈一下. 列表控件的顶部有一排按钮,用户可以通过选
vc mysql断线自动连接_VC连接MySQL
VC连接MySQL一、MySQL的安装可以考虑安装mysql-5.0.41-win32(可到http://www.newhua.com/soft/3573.htm处下载),当然你有更新的版本更好,注意选择“完全安装”(只有这样才会安装VC编译时需要的头文件等)。安装后期会进行服务器配置,你可以设置你的服务器登陆密码,也可以不设置密码。二、VC6.0的设置(1)打开VC6.0工具栏Tools菜单下的...
解决列表框更新数据的时候的闪烁问题
<br />解决列表框更新数据的时候的闪烁问题(VC防止窗口及其控件(如CListCtrl))<br /> <br /> <br />1、将Invalidate()替换为InvalidateRect()。 <br /> <br /> Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而InvalidateRect()仅仅重画Rect区域内的内容,所以所需时间会少一些。虫虫以前很懒,经常为一小块区域的重画就调用Invalidate(),不愿意自己去计算需要重画的Rect,但是事实是,如果
VC ListCtrl中嵌入进度条
VC中在listctrl中嵌入进度条,截图如下: 其实要实现这个非常容易,以下是自绘ListCtrl的代码,首先继承CListCtrl,然后增加函数OnCustomDraw: void CProcessList::OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult) { //draw each item.set txt color,bkcolor.... ...
SetExtendedStyle
SetExtendedStyle VC CListCtrl的成员函数声明 DWORD SetExtendedStyle( DWORD dwNewStyle ); 函数功能设置CListCtrl的扩展样式 dwNewStyle指定的扩展样式 LVS_EX_GRIDLINES //绘制表格 ...
资源管理器 小结
没用过VC写程序的人,用它写程序真是太累来了,折腾了两天一个简单的资源管理器出炉,虽然辛苦,但还是值得的。小结一下这个程序在界面方面主要用了 CListCtrl和CTreeCtrl,这两个空间用来显示一些目录,文件。两天的时间没白费,把这两个控件使用方式大概弄明白了。现在发现有很框架的思想都是很相像的。 这个东西主要比较麻烦的是 对文件的遍历,和文件属性的操作。 大概用到下面这
794




被折叠的 条评论
为什么被折叠?



