none
Clistctrl 双击列分割线自动调整宽度结果不准确 RRS feed

  • 问题

  • 在ListCtrl的header部分,每个列名称之间会被分割线分割,如果一列中的数据长度大于了默认的列宽度,这列的数据会被截断然后以...代替。如果认为的拖动列分割线,将其宽度调整到大于该列最长数据宽度使其可以正常显示,然后双击改列与下一列的分割线,这列会自动调整宽度,但是我现在遇到的问题是自动调整的结果不准确,最长的数据还是被截断。

    与windows的详细信息列表相比,发现在windows资源管理窗口做类似的操作就可以较好的适应宽度。

    请问是否有人知道该控件对于响应这部分自动调整宽度是怎么实现(使用了什么样的函数/做了什么样的响应)?如果需要进行修正,是否可以通过重写某些函数实现?

    2014年9月1日 7:27

答案

  • 您可以自己添加处理LVM_HITTEST消息,自己去调用SetColumnWidth()去设置宽度。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2014年9月3日 9:41
    版主
  • 您可以自己添加处理LVM_HITTEST消息,自己去调用SetColumnWidth()去设置宽度。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    使用HitTest只能在点击到list的条目时响应,针对于colum的分割线双击,其响应的消息为:HDN_DIVIDERDBLCLICKW,只需要重写响应函数即可实现认为控制
    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.

    2014年9月2日 5:44
  • 您所回复的内容和我所遇到的问题并不一致。我并不是不知道怎么来设置一列的宽度,我想知道的是在列分割线部分双击,控件自动调整当前列宽度这个过程是否可以让我进行控制。因为目前使用控件自动调整结果不准确,长度并不是当前列最长那串字符的宽度,而是会短一些。
    2014年9月3日 1:14
  • 您可以自己添加处理LVM_HITTEST消息,自己去调用SetColumnWidth()去设置宽度。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2014年9月3日 9:41
    版主
  • 您可以自己添加处理LVM_HITTEST消息,自己去调用SetColumnWidth()去设置宽度。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    使用HitTest只能在点击到list的条目时响应,针对于colum的分割线双击,其响应的消息为:HDN_DIVIDERDBLCLICKW,只需要重写响应函数即可实现认为控制
    2014年9月11日 2:06