当前位置:C++技术网 > 资讯 > 工作日记:实现CListCtrl任意单元格的编辑

工作日记:实现CListCtrl任意单元格的编辑

更新时间:2015-06-25 15:06:07浏览次数:1+次

2013年9月6日 星期五 小雨

    今天的工作主要是实现了双击使相应的列表单元格进入编辑状态。主要的问题就是ListCtrl控件事件响应使用不熟,搞了半天才知道怎么响应,搞出来后结果之前的做法也是有用的。不懂时怎么都搞不明白,懂了的时候凭你怎么整都没事。事件响应会了,然后熟悉各种参数的意义和用法,然后慢慢查资料看实现的原理。用别人给出的东西直接使用实现不了,拿来主义不行。我也想,如果直接就能成功,这也太没水平了吧,结果正好不行。那么我就慢慢将其中的原理弄明白了,自己就做出来了,也学到东西了。双击编辑,单击其他位置就可以退出编辑。但是还存在一个小问题,即,动态创建的编辑框获取文本和再次查询后原来的文本会混乱,如果释放掉编辑框对象,获取文本时会出错,而不释放,则查询后单击就会将相应的单元格的值设成编辑框的。这是小问题。


【后记】
    这里涉及到的技术就是实现ListCtrl像Excel表格一样操作,点击哪个单元格就编辑哪个单元格。因为默认情况下,这个控件只支持编辑第一列单元格,满足不了需要。要实现这个功能,如果没做过,那肯定不知道如何下手。
    实现任意单元格双击编辑单元格的方法就是:单击单元格时,根据单击的位置查询对应于控件的位置,然后获取对应的单元格的矩形大小,然后在这个矩形中创建一个编辑框,实现编辑。编辑完后(丢失焦点或者回车结束等),将创建的编辑框中的文本设置到底下的单元格中即可。而创建编辑框后要能够响应单元格的事件,请参考《创建按钮并响应按钮事件》。