【问题标题】:C++ MFC list control with horizontal scroll bar带有水平滚动条的 C++ MFC 列表控件
【发布时间】:2012-08-05 06:49:33
【问题描述】:

我来这里是为了问这个问题,因为我找到的解决方案都没有让我满意,甚至没有奏效。我的问题很简单。

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

我尝试了EnableScrollbarShowScrollBarSetScrollPos,但它们都不起作用。如何创建水平滚动条并正确显示?

【问题讨论】:

  • 我已经这样做了,但是很痛苦。我不记得我必须跳过所有的箍才能使它工作,但似乎我必须跟踪最宽的字符串并相应地设置滚动宽度。我似乎还记得一些关于滚动到顶部,然后在宽度改变以使栏正确更新时回到当前位置的事情。太久以前了,不过很多细节都记不住了。
  • 滚动条应该自动出现-"如果列表控件的项目太多或项目的总宽度大于控件可以显示的范围,则只能在控件内显示, 它将配备垂直滚动条, 水平滚动条, 或两者。使用 LVS_NOSCROLL 样式进行控制。”此来源可以提供帮助 - functionx.com/visualc/controls/listcontrol.htm
  • 确实应该出现。但是,事实并非如此。是否有某种属性可以抑制其幻影、禁用或隐藏它?

标签: c++ mfc scrollbar clistctrl


【解决方案1】:

如果您使用的是 LVS_REPORT 样式,它应该只为您添加滚动条(只要列超过 ListCtrl 的宽度)。不需要特别的诡计。

您的 CListCtrl 是否有可能比它的容器窗口大,因此没有添加滚动条?如果仍然无法正常工作,请在您的问题中添加屏幕截图。

【讨论】:

  • 我解决了这个问题。 Schepurin 和snowdude 都是对的。我的问题是当我编写 OnSize 方法时。我使用了MoveWindow,宽度参数比它应该的大,所以没有调用滚动条出现的事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
相关资源
最近更新 更多