listview怎样设置成这样的显示效果?

时间:2023-02-08 21:21:34
我的问题是:
1.怎样不显示行与行之间、列与列之间的分隔线?
2.怎样扩大行间距(是不是用插图像列表的方式?还有什么别的方式?)
3.怎样修改字的颜色和背景颜色?

我自己的listview:
listview怎样设置成这样的显示效果?

而人家的listview显示效果(用spy++发现它确实是一个listview):
listview怎样设置成这样的显示效果?

13 个解决方案

#1


1.网格可以有属性可以去掉
2.行间距用图片

#2


1、在设置扩展样式SetExtendedStyle时不要加上 LVS_EX_GRIDLINES风格。
2、有两种方法:
①设置图像列表
	m_image.Create(1, 18, ILC_COLOR | ILC_MASK, 0, 0);
m_image.Add(NULL);
m_list.SetImageList(&image, LVSIL_SMALL);

把18改大点就可以增大行距。其中m_image是CImageList类型,m_list是CListCtrl类型。
②手动发送一个消息。这个方法比较复杂,需要派生CListCtrl一个类来实现。我只能提供几个关键词供你搜索:WM_WINDOWPOSCHANGED、MeasureItem、ON_WM_MEASUREITEM_REFLECT、列表行高度。
3修改字的颜色
m_list.SetTextColor(RGB(0, 0, 0));

但它是把所有行所有列的文字修改为同一个颜色,可能不符合你的需求。
修改背景色
这个需要自绘,实现起来也很复杂,你可以试试搜索关键词DrawItem、LVS_OWNERDRAWFIXED、FillSolidRect。

参考资源
1、《改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景》 http://www.vckbase.com/index.php/wv/1550
2、 http://blog.csdn.net/ecbtnrt/article/details/6313723
3、 http://download.csdn.net/download/ecbtnrt/3182586

#3


listview怎样设置成这样的显示效果?


楼主  这是不是你要的情况?

#4


listview怎样设置成这样的显示效果?

图片看不到   我重发一张

#5


如果想用MFC实现“人家的listview显示效果”,可能会很麻烦,需要做很多事情。
现在做MFC开发的很少了,讨论交流也少了。
MFC做界面现在不吃香了。
楼主不妨关注dulib界面库、soui界面库,做界面效果一流。

#6


这个很简单    只需要一行代码就搞定了  

#7


怎样加上垂直滚动条风格呢?

#8


listctrl_.SetGridLines(XXX)   

这个 就是 去掉风格线的代码。   其中XXX 是你自己定义的变量  BOOL值  ,可以*的切换 

#9


这不是弈城的界面吗,而且竟然是个5D listview怎样设置成这样的显示效果?

#10


Header 和 ListCtrl都可以自绘的, 楼主, 貌似重载 OnDrawItem就行了, 我曾经画过比他复杂多了的!

#11


引用 9 楼 mayudong1 的回复:
这不是弈城的界面吗,而且竟然是个5D listview怎样设置成这样的显示效果?

你是几D?

#12


BCG没有这个功能吗?

#13


您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法

#1


1.网格可以有属性可以去掉
2.行间距用图片

#2


1、在设置扩展样式SetExtendedStyle时不要加上 LVS_EX_GRIDLINES风格。
2、有两种方法:
①设置图像列表
	m_image.Create(1, 18, ILC_COLOR | ILC_MASK, 0, 0);
m_image.Add(NULL);
m_list.SetImageList(&image, LVSIL_SMALL);

把18改大点就可以增大行距。其中m_image是CImageList类型,m_list是CListCtrl类型。
②手动发送一个消息。这个方法比较复杂,需要派生CListCtrl一个类来实现。我只能提供几个关键词供你搜索:WM_WINDOWPOSCHANGED、MeasureItem、ON_WM_MEASUREITEM_REFLECT、列表行高度。
3修改字的颜色
m_list.SetTextColor(RGB(0, 0, 0));

但它是把所有行所有列的文字修改为同一个颜色,可能不符合你的需求。
修改背景色
这个需要自绘,实现起来也很复杂,你可以试试搜索关键词DrawItem、LVS_OWNERDRAWFIXED、FillSolidRect。

参考资源
1、《改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景》 http://www.vckbase.com/index.php/wv/1550
2、 http://blog.csdn.net/ecbtnrt/article/details/6313723
3、 http://download.csdn.net/download/ecbtnrt/3182586

#3


listview怎样设置成这样的显示效果?


楼主  这是不是你要的情况?

#4


listview怎样设置成这样的显示效果?

图片看不到   我重发一张

#5


如果想用MFC实现“人家的listview显示效果”,可能会很麻烦,需要做很多事情。
现在做MFC开发的很少了,讨论交流也少了。
MFC做界面现在不吃香了。
楼主不妨关注dulib界面库、soui界面库,做界面效果一流。

#6


这个很简单    只需要一行代码就搞定了  

#7


怎样加上垂直滚动条风格呢?

#8


listctrl_.SetGridLines(XXX)   

这个 就是 去掉风格线的代码。   其中XXX 是你自己定义的变量  BOOL值  ,可以*的切换 

#9


这不是弈城的界面吗,而且竟然是个5D listview怎样设置成这样的显示效果?

#10


Header 和 ListCtrl都可以自绘的, 楼主, 貌似重载 OnDrawItem就行了, 我曾经画过比他复杂多了的!

#11


引用 9 楼 mayudong1 的回复:
这不是弈城的界面吗,而且竟然是个5D listview怎样设置成这样的显示效果?

你是几D?

#12


BCG没有这个功能吗?

#13


您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法