MFC CCheckListBox 的垂直滚动条没有更新

Posted

技术标签:

【中文标题】MFC CCheckListBox 的垂直滚动条没有更新【英文标题】:MFC CCheckListBox's vertical scrollbar is not updated 【发布时间】:2016-11-07 19:36:34 【问题描述】:

我不得不用 CCheckListBox 替换旧的 MFCSharpGrid 控件。

现在,在显示列表框的垂直滚动条后,它似乎将正确的事件(向上/向下和向上/向下翻页)发送到列表的客户区,并且允许鼠标滚轮滚动这在隐藏滚动条的情况下不可用。

但是,滚动条本身并没有更新:滚动客户区时拇指没有移动(甚至没有响应滚动条的滚动),并且拇指的大小与页面大小不成比例.

列表框的创建大致如下:

m_grid.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | LBS_NOTIFY, m_gridRect, this, IDC_GRID1);

字符串被迭代添加,然后我们请求显示滚动条,如下所示:

m_grid.ShowScrollBar(SB_VERT, TRUE);

尝试将 SCROLLINFO 设置为 min/max/page-size 并没有解决位置更新问题。

我在这里错过了什么?

【问题讨论】:

【参考方案1】:

您不想手动使用ShowScrollBar。删除它,而是使用WS_VSCROLL 样式创建列表框。

m_grid.Create(WS_VSCROLL | LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | LBS_NOTIFY, m_gridRect, this, IDC_GRID1);

这样当内容超过控件的长度时,你会自动获得一个垂直滚动条。

【讨论】:

以上是关于MFC CCheckListBox 的垂直滚动条没有更新的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MFC 中垂直同步两个列表控件

vc mfc 中的listctrl控件 垂直滚动条置于最底端

CSS 滚动条没有用 前端的同伙来看看

为啥浏览器访问空间时横向滚动条没了

隐藏 mfc 水平滚动条

MFC 列表控件滚动显示额外的网格线