一个快速轻量级的单元格控件






4.42/5 (31投票s)
一个快速轻量级的单元格控件,用于显示表格数据。该单元格是一个基于ATL::CWindow的自定义控件。
引言
我需要一个快速且易于扩展的单元格控件。已经有一些基于或子类化CListCtrl
的网格控件可用。CListCtrl
很棒而且速度很快,但仍然有一些限制,例如它没有行标题,并且支持合并单元格并不容易。上个月,我决定编写自己的网格控件,并希望在这里分享我的源代码,因为我的一些知识是从CodeProject上学到的。感谢Chris Maunder的MFC Grid control 2.25;我从中学习了很多。同时,感谢Vladislav Gelfer的RgnLight类,它对于剪切非常有用。
要求
- ATL 7.0/7.1
- WTL 7.5/8.0
强调
使用API GetRegionData
和ScrollWindow
来减少重绘是加速网格绘制的主要思想。只需要重新绘制状态无效的单元格,而无需重新绘制有效的单元格。 这样,即使不使用memdc
,也不会出现闪烁,并且绘制速度非常快。
基础结构
特点
- 像Excel一样,一个工作簿管理多个工作表。
- 合并和取消合并单元格。
- 冻结列/行。
- 导入/导出XML(Excel格式)。
- 样式(字体、边框、对齐方式、填充...)。
- 默认/自定义单元格符号。
- 默认/自定义单元格编辑器。
- 使用轻量级COM对象使其易于扩展。
- 使用真实/虚拟模式来管理数据。
- 拖动活动选择。
- 支持单选或多选。
历史
- 2006年7月17日 - 支持编辑单元格。
- 2006年7月17日 - 支持合并单元格。
- 2006年7月11日 - 当鼠标超出网格客户端区域时,在选择模型中自动滚动。
结论
任何意见或问题可以发送到 xueming.yan@gmail.com。