文档章节

MFC_list Control列表/表格控件

一个小妞
 一个小妞
发布于 2017/09/27 10:29
字数 408
阅读 346
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

先看一下这个控件有些什么属性吧:

1.样式View:Report表格,list列表

2.设置风格:SetExtendedStyle

SetExtendedStyle函数的定义形式为:

DWORD SetExtendedStyle(DWORD dwNewStyle );

参数:dwNewStyle: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//多工作区)

SetExtendedStyle函数的具体用法如例:

m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT );

3.滚动条位置Left Scrollbar:滚动条在左侧还是右侧

4.MFC的表格不允许编辑,如果想编辑只能在编辑开始事件中把单元格处理成Edit,在编辑结束后把edit的值更新到list里:

(1)首先属性Edit Labels设为true;

(2)增加事件响应函数:

ON_NOTIFY(NM_DBLCLK, IDC_LIST_COORD, &CCoordManageDlg::OnNMDblclkListCoord)
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST_COORD, &CCoordManageDlg::OnLvnEndlabeleditListCoord)

双击事件:

void CCoordManageDlg::OnNMDblclkListCoord(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	*pResult = 0;

	POSITION pos = m_listCoord.GetFirstSelectedItemPosition();
	int nSel = m_listCoord.GetNextSelectedItem(pos);
	if ( nSel >= 0 )
	{
		m_listCoord.SetFocus();
		CEdit* pEdit = m_listCoord.EditLabel( nSel );
	}
}

edit编辑结束事件

void CCoordManageDlg::OnLvnEndlabeleditListCoord(NMHDR *pNMHDR, LRESULT *pResult)
{
	NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
	*pResult = 0;

	CString strName = pDispInfo->item.pszText;
	int nSel = pDispInfo->item.iItem;
	m_listCoord.SetFocus();

	if( ( ! strName.IsEmpty() ) && nSel >= 0 )
		m_listCoord.SetItemText( nSel, 0, strName);
}

(5)点击表头,获取列头的编号

ON_NOTIFY(HDN_ITEMCLICK, 0, &CStartDlg::OnHdnItemclickListStartmonitor)
void CStartDlg::OnHdnItemclickListStartmonitor(NMHDR *pNMHDR, LRESULT *pResult)
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	int nRow =  pNMListView->iItem;
	switch(nRow)
	{
	case 0:
		break;
	case 1:
		break;
	}	
}

(6)获取当前选择项

    POSITION pos = GetFirstSelectedItemPosition();
    if (pos != NULL)
    {
        int iSubItem = GetNextSelectedItem(pos);
    }

 

上一篇: KML格式的文件
下一篇: Reactor反应器模式
一个小妞
粉丝 89
博文 195
码字总数 137355
作品 0
海淀
程序员
私信 提问
加载中
请先登录后再评论。
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
680
1
首列固定的列表

实现特殊的表格(UITableView)效果:即表格中的首列固定不动,而每一行除了首列均可左右拖动,以展现每一行更多内容。 作者谭林江(@无法越狱的痛)说:去益盟面试回来,感觉聊得有点郁闷,...

匿名
2013/01/24
1.3K
0
NSSplitView 扩展--DMSplitView

DMSplitView 对标准的 OS X 的 NSSplitView 控件进行改造,可满足更复杂的要求: 子视图的大小和约束 分隔条位置 可收缩伸展的子视图 动画变换效果 可控制分隔条的粗细和样式 可保存和恢复分...

匿名
2013/01/24
368
0
C++模板库--C++ B-tree

这是一个google开源的C++模板库,实现了基于B-tree数据结构的有序内存容器。类似于STL的map、set、multimap和multiset模板,C++ B-tree也提供了btreemap、btreeset、btreemultimap和btreemu...

匿名
2013/02/05
3.4K
1
代码检索工具--CodeQuery

CodeQuery 是一个用来搜索 C/C++、Java 源码的索引工具。基于 cscope 和 ctags 构建,使用 cqmakedb 工具来生成 CodeQuery 数据库文件,然后通过 GUI 工具进行查看。 支持搜索:符号、函数、...

匿名
2013/02/25
2.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

人工神经网络分类器及BP算法相关数学推导和思考

人工神经网络相关数学推导和思考 今天凌晨今天凌晨的欧冠的八分之一决赛中,巴萨依靠朗格莱,梅西,苏亚雷斯三人的进球顺利挺进八强!梅老板的1V4更是让人直呼:爷青回!那么问题来了,如何根...

osc_873fteab
16分钟前
0
0
Spring Boot实战解决高并发数据入库: Redis 缓存+MySQL 批量入库

前言 最近在做阅读类的业务,需要记录用户的PV,UV; 项目状况:前期尝试业务阶段; 特点: 快速实现(不需要做太重,满足初期推广运营即可) 快速投入市场去运营 收集用户的原始数据,三要素...

osc_g96tdr1z
17分钟前
0
0
HFDS的数据写入流程

1.HFDS的数据写入流程的基本参数 首先了解数据写入过程中,什么是block, packet, chunk 1.block:数据块,当上传的文件太大时, 就需要分块,一个块默认设置时128M, 在客户端完成切割操作。...

osc_52r4y6wv
18分钟前
22
0
CVE-2020-14644 weblogic iiop反序列化漏洞分析

报告编号:B6-2020-081101 报告来源:360CERT 报告作者:ph4nt0mer 更新日期:2020-08-11 0x01 文章简述 2020年7月15日,Oracle发布2020年7月关键补丁更新,其中针对 WebLogic Server Core组件...

360CERT
今天
0
0
程序员到底要不要懂业务?

一、前言 给非互联网行业从业者科普一下,互联网公司一个项目团队的标准成员组成和职责分工:项目经理、架构师、产品经理、核心开发人员(TL)、开发、测试、运营(或业务方)。 项目经理:一...

osc_r0irdqn7
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部