我希望CListCtrl.EditLabel()用于列表的任何列。我该如何实现这样的功能?
答案 0 :(得分:2)
不要尝试使用CListCtrl。
使用MFC Grid Control。我们成功地将其部署在现成的应用程序中。它为所有单元格提供就地编辑,复选框,旋转等,以及列和行标题,自动调整大小,自动扩展,颜色,拖放。
答案 1 :(得分:2)
这是可行的,但它确实需要用鼠标点击和焦点事件填充相当多的东西。
简而言之,您捕获鼠标左键消息并将其转换为单元格命中详细信息(即行和列索引)。
使用这些单元格详细信息,您无法确定列表视图单元格的大小和位置以及它包含的文本值。
现在,使用上一步中的大小和位置详细信息,直接在此单元格上创建一个CEdit控件,并为其提供单元格的文本值。
最后一步是处理焦点和键盘输入CEdit的事件,以便CEdit的文本细节可以放回到列表视图单元格中。
确实需要相当多的编码,但如果做得好,它确实可以替代网格控制。