如何让ListView只显示垂直滚动条?

ciahi 2008-11-12 03:41:45
我创建ListView的代码如下:
CreateWindowEx(NULL, _T("SysListView32"), NULL,
WS_VISIBLE | WS_CHILD | LVS_LIST | LVS_SINGLESEL | WS_BORDER,
0, 0, 0, 0,
hWnd, (HMENU)ID_LV_GROUP, g_hInst, NULL);
我的ListView中使用了图标

如果项太多的话,只会出来水平滚动条,而不会出来垂直滚动条,此时ListView分成了多列来显示所有数据。

怎么才能只让垂直滚动条出来,或者只显示一列

谢谢!!!
...全文
545 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
LVITEM lvI;

lvI.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
lvI.state = 0;
lvI.stateMask = 0;

lvI.iItem = index;
lvI.iSubItem = 0;
lvI.pszText = _T("**");
lvI.iImage = 0;

(int)::SendMessage(m_hListView, LVM_INSERTITEM, 0, (LPARAM)(&lvI));


sandyqy 2008-11-14
  • 打赏
  • 举报
回复
可能是数据的插入不正确,我尝试了一下,把属性设为LVS_REPORT是可以显示项目的。
你可以把图标先去掉,然后尝试一下正确不。
图标是可以利用ImageList_Create来创建的加入的,
只是需要
ListView_SetImageList(hWndList, hSmall, LVSIL_SMALL);
一下,
然后你可以指向相应的图标位置
lvI.iImage = index;

SDK中有例子的
ciahi 2008-11-13
  • 打赏
  • 举报
回复
插入了
如果在创建ListView的时候用如下的风格:
WS_VISIBLE | WS_CHILD | LVS_LIST | LVS_SINGLESEL | WS_BORDER
则数据显示非常正常,此时不过不能显示垂直滚动条,Item都好着呢

我现在是想要垂直滚动条,而不是水平的,所以我将创建ListView时的风格改成了如下:
WS_VISIBLE | WS_CHILD | LVS_SINGLESEL | WS_BORDER | LVS_REPORT | LVS_NOCOLUMNHEADER
这时候垂直滚动条出来了,但是里面的Item却显示不出来了

插入Item应该没有问题的
只要将LVITEM的各项设好,然后ListView_InsertItem就可以实现了
TracyZhongcf 2008-11-13
  • 打赏
  • 举报
回复
你是如何插入Item的?是插入了Item(Item能够选中)但是看不到数据呢?还是根本没有插入Item(不能选中Item说明没有插入成功)
ciahi 2008-11-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 seayou 的回复:]
如果 只有一列 的话 可以用listbox
[/Quote]

恩,谢谢
我在msdn上找了找,也不知道咋样让listBox使用图标
但msdn上的第一句话就是:List box items can be represented by text strings, bitmaps, or both

说是可以使用bitmaps,但我根本没有找到

不过看到一个例子使用了bitmaps,只不过是通过自绘绘上去的
ciahi 2008-11-13
  • 打赏
  • 举报
回复
恩,是呀
看不见ITEM
beyondma 2008-11-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ciahi 的回复:]
我现在把创建时的风格改成这样的了:
WS_VISIBLE | WS_CHILD | LVS_SINGLESEL | WS_BORDER | LVS_REPORT | LVS_NOCOLUMNHEADER

可以看见垂直滚动条了,但是数据确显示不出来了~~~
[/Quote]
什么叫数据显示不出来,看不见一个ITEM?
seayou 2008-11-13
  • 打赏
  • 举报
回复
如果 只有一列 的话 可以用listbox
ciahi 2008-11-12
  • 打赏
  • 举报
回复
再顶!
ciahi 2008-11-12
  • 打赏
  • 举报
回复
我现在把创建时的风格改成这样的了:
WS_VISIBLE | WS_CHILD | LVS_SINGLESEL | WS_BORDER | LVS_REPORT | LVS_NOCOLUMNHEADER

可以看见垂直滚动条了,但是数据确显示不出来了~~~
ciahi 2008-11-12
  • 打赏
  • 举报
回复
恩,谢谢,这个知道
我现在不用多列,只要一列就行,所以就没有再插入新列

我的意思可能表达的不清楚
是这样的:

本来我想要的ListView是这样的

1.******
2.******
3.******
4.******
……
……

我想让它一直垂直显示,如果有不可见的,就让它出来垂直滚动条

但现在显示成这样的了:
1.******* 4.******
2.******* 5.******
3.******* ……
这时候出来的是水平滚动条,默认就是这样的

我不知道应该怎么设置,才能实现第一种的效果

谢谢!!!
TracyZhongcf 2008-11-12
  • 打赏
  • 举报
回复
创建了ListView还需要插入Column,调用InsertColumn来插入列才行。增加一项是通过InsertItem来在当前列下增加Item,这样它才会增加行数而不是列数。

7,657

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧