我不得不用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并不能解决位置更新问题。
我在这里缺少什么?
答案 0 :(得分:1)
您不想手动使用ShowScrollBar
。删除它,而是使用WS_VSCROLL
样式创建列表框。
m_grid.Create(WS_VSCROLL | LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | LBS_NOTIFY, m_gridRect, this, IDC_GRID1);
这样,当内容超过控件的长度时,您会自动获得垂直滚动条。