MFC CCheckListBox的垂直滚动条未更新

时间:2016-11-07 19:36:35

标签: c++ mfc

我不得不用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 个答案:

答案 0 :(得分:1)

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

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

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