• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

关于MFC中的CListView添加column的问题

无聊的职业生涯 2008-04-21 04:45:46
在MFC中的CListView添加column时,比如添加,姓名 年龄 性别三列,此时在性别列后还有一列,没有标题,现想不想让该列出现在ListView中,除非用户通过鼠标拖动列的宽度,程序中如果设置性别这列的宽度很大,就会出现在水平滚动条,而且在程序最大化后如果性别的宽度不够的话还是能看到最后一列,如果大家曾经做过C++Builder的程序就会知道在C++Builder中的ListView可以设置最后一列为AutoSize=true即可以解决,这样,用户改变窗口大小后,最后一列性别会自动变化,不知道我的问题说清楚了没有!请问如何解决?
...全文
87 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Kudeet 2008-04-21
CListCtrl没有提高那样的属性,你是不可能等得到的 :)
回复
还是比较复杂啊,不能像C++Builder中那个设置最后一列的属性:Autosize=true啊,只能自己计算啊,大家都是这做的话,我也只能这么做了!非常感谢大了,继续看看有没有什么更好的方法!
回复
涉及到最大化事件时首先要响应onsize。

你这个问题俺有类似的需求,俺是直接用另一个隐藏的控件实现的。
回复
cnzdgs 2008-04-21
响应WM_SIZE消息,用ListView类的GetClientRect函数取得视图客户区宽度,减去其它各列的宽度,再GetListCtrl().SetColumnWidth(……)。
回复
DDGG 2008-04-21

// 假设lsvListView是你的CListView,i是最右一列。
lsvListView.GetListCtrl().SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);
回复
Kudeet 2008-04-21
当宽度小于控件的宽度时,最后一列的宽度等与视图的宽度减去前面所有列的宽度
回复
吹雪 2008-04-21
在WM_SIZE消息响应函数中处理.
回复
吹雪 2008-04-21
在MFC中只能自己计算。
比如你的ListView一共有三列,先求出ListView的宽度,减去前面2列的宽度之和,然后将这个差设置为第3列的宽度即可国。
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-21 04:45
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……