积极答复者
Clistctrl 双击列分割线自动调整宽度结果不准确

问题
-
在ListCtrl的header部分,每个列名称之间会被分割线分割,如果一列中的数据长度大于了默认的列宽度,这列的数据会被截断然后以...代替。如果认为的拖动列分割线,将其宽度调整到大于该列最长数据宽度使其可以正常显示,然后双击改列与下一列的分割线,这列会自动调整宽度,但是我现在遇到的问题是自动调整的结果不准确,最长的数据还是被截断。
与windows的详细信息列表相比,发现在windows资源管理窗口做类似的操作就可以较好的适应宽度。
请问是否有人知道该控件对于响应这部分自动调整宽度是怎么实现(使用了什么样的函数/做了什么样的响应)?如果需要进行修正,是否可以通过重写某些函数实现?
答案
-
您可以自己添加处理LVM_HITTEST消息,自己去调用SetColumnWidth()去设置宽度。
使用HitTest只能在点击到list的条目时响应,针对于colum的分割线双击,其响应的消息为:HDN_DIVIDERDBLCLICKW,只需要重写响应函数即可实现认为控制
Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
- 已标记为答案 蓝枫之殇 2014年9月11日 2:06
全部回复
-
你好:
在MSDN文档里有关于CListCtrl类的介绍,我们可以通过SetColumnWidth函数来让控件自动根据字长来调整列宽,在setColumnWidth函数
里采用LVSCW_AUTOSIZE属性。具体怎么实现在这有个详细的例子:http://www.codeproject.com/Articles/11483/Let-Your-ListCtrl-Adjust-its-Column-Widths-Automat
有问题可以继续在论坛提问。
Shu Hu
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click HERE to participate the survey. -
您可以自己添加处理LVM_HITTEST消息,自己去调用SetColumnWidth()去设置宽度。
使用HitTest只能在点击到list的条目时响应,针对于colum的分割线双击,其响应的消息为:HDN_DIVIDERDBLCLICKW,只需要重写响应函数即可实现认为控制
Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
- 已标记为答案 蓝枫之殇 2014年9月11日 2:06