如何使用CListCtrl就地编辑列?

时间:2008-10-31 15:32:25

标签: mfc clistctrl

我希望CListCtrl.EditLabel()用于列表的任何列。我该如何实现这样的功能?

2 个答案:

答案 0 :(得分:2)

不要尝试使用CListCtrl。

使用MFC Grid Control。我们成功地将其部署在现成的应用程序中。它为所有单元格提供就地编辑,复选框,旋转等,以及列和行标题,自动调整大小,自动扩展,颜色,拖放。

答案 1 :(得分:2)

这是可行的,但它确实需要用鼠标点击和焦点事件填充相当多的东西。

简而言之,您捕获鼠标左键消息并将其转换为单元格命中详细信息(即行和列索引)。

使用这些单元格详细信息,您无法确定列表视图单元格的大小和位置以及它包含的文本值。

现在,使用上一步中的大小和位置详细信息,直接在此单元格上创建一个CEdit控件,并为其提供单元格的文本值。

最后一步是处理焦点和键盘输入CEdit的事件,以便CEdit的文本细节可以放回到列表视图单元格中。

确实需要相当多的编码,但如果做得好,它确实可以替代网格控制。