65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.42/5 (31投票s)

2006年6月30日

CPOL

1分钟阅读

viewsIcon

93235

downloadIcon

4511

一个快速轻量级的单元格控件,用于显示表格数据。该单元格是一个基于ATL::CWindow的自定义控件。

Sample Image - MyCell.PNG

引言

我需要一个快速且易于扩展的单元格控件。已经有一些基于或子类化CListCtrl的网格控件可用。CListCtrl很棒而且速度很快,但仍然有一些限制,例如它没有行标题,并且支持合并单元格并不容易。上个月,我决定编写自己的网格控件,并希望在这里分享我的源代码,因为我的一些知识是从CodeProject上学到的。感谢Chris Maunder的MFC Grid control 2.25;我从中学习了很多。同时,感谢Vladislav Gelfer的RgnLight类,它对于剪切非常有用。

要求

  • ATL 7.0/7.1
  • WTL 7.5/8.0

强调

使用API GetRegionDataScrollWindow来减少重绘是加速网格绘制的主要思想。只需要重新绘制状态无效的单元格,而无需重新绘制有效的单元格。 这样,即使不使用memdc,也不会出现闪烁,并且绘制速度非常快。

基础结构

特点

  1. 像Excel一样,一个工作簿管理多个工作表。
  2. 合并和取消合并单元格。
  3. 冻结列/行。
  4. 导入/导出XML(Excel格式)。
  5. 样式(字体、边框、对齐方式、填充...)。
  6. 默认/自定义单元格符号。
  7. 默认/自定义单元格编辑器。
  8. 使用轻量级COM对象使其易于扩展。
  9. 使用真实/虚拟模式来管理数据。
  10. 拖动活动选择。
  11. 支持单选或多选。

历史

  • 2006年7月17日 - 支持编辑单元格。
  • 2006年7月17日 - 支持合并单元格。
  • 2006年7月11日 - 当鼠标超出网格客户端区域时,在选择模型中自动滚动。

结论

任何意见或问题可以发送到 xueming.yan@gmail.com

© . All rights reserved.