MFC CCheckListBox 的垂直滚动条未更新



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

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

但是,滚动条本身不会更新:当滚动客户端区域时,拇指不会移动(甚至在响应滚动条的滚动时也不会移动),并且拇指的大小与页面大小不成比例。

列表框的创建大致如下:

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

字符串被迭代地添加,然后我们请求像这样显示滚动条:

m_grid.ShowScrollBar(SB_VERT, TRUE);

尝试设置最小/最大/页面大小的SCROLLINFO没有解决位置更新问题。

我在这里错过了什么?

您不希望手动使用ShowScrollBar。删除它,并创建WS_VSCROLL样式的列表框。

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

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

最新更新