2012-08-08 26 views
1

我在这里问这个问题,因为我找到的解决方案都不满意,甚至没有工作。我的问题很简单。带水平滚动条的C++ MFC列表控件

我在C++中有一个CListCtrl有很多列。它们不适合列表的宽度,所以我必须添加一个水平滚动条。

我试着用EnableScrollbar,ShowScrollBar,SetScrollPos,但他们都没有工作。我如何创建一个水平滚动条并正确显示它?

+0

我已经这样做了,但它很痛苦。我不记得我必须跳过的所有环节才能使它工作,但似乎我必须跟踪最宽的字符串并相应地设置滚动宽度。我似乎也回想起了一些关于滚动到顶部的内容,然后回到当前位置,当宽度改变以使条更新正确时。很久以前,要记住很多细节。 – 2012-08-08 07:54:50

+1

滚动条应自动出现 - “列表控件的项目只能显示在控件中,如果项目太多或项目的总宽度大于控件可显示的大小,它将配备有一个垂直滚动条,一个水平滚动条,或两者兼而有之,如果你想要防止滚动条显示,即使列表的项目超出了分配的矩形,将No Scroll属性设置为True,或者使用LVS_NOSCROLL样式创建控件。这个来源可以帮助 - http://www.functionx.com/visualc/controls/listcontrol.htm – SChepurin 2012-08-08 09:03:41

+0

的确应该出现。但是,它没有。是否有某种属性可以压制它的幻影,禁用或隐藏它? – 2012-08-08 09:12:47

回答

1

如果您使用LVS_REPORT风格,它应该为您添加滚动条(只要列超出ListCtrl的宽度)。没有特别的欺骗需要。

您的CListCtrl的尺寸可能大于它的容器窗口,因此不添加滚动条?如果它仍然无效,请为您的问题添加屏幕截图。

+1

我解决了这个问题。 SChepurin和snowdude都是对的。我的问题是当我编写OnSize方法。我使用了MoveWindow,其宽度参数大于它应该是的,所以没有事件调用滚动条的外观。 – 2012-08-08 09:26:44