【发布时间】:2018-07-23 10:26:50
【问题描述】:
我有一个带有 CListCtrl 的简单对话框。列表控件在报表视图中,并且只有一列。
我通过重写 OnNcCalcSize() 函数禁用了列表的水平滚动
void CMyListCtrl::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS * lpncsp)
{
// disable horizontal scroll bar
ModifyStyle(WS_HSCROLL, 0);
CListCtrl::OnNcCalcSize(bCalcValidRects, lpncsp);
}
我通过处理 NM_CLICK 消息来捕捉选择更改,但由于某种原因,单击列表中最后一个可见项时不会调用此消息。垂直滚动条的底部箭头最初也不可见,当我单击它时它也不滚动。基本上,红色方块中的所有内容都没有收到点击消息。
我很确定这是因为我禁用了水平滚动条,因为它几乎是水平滚动条应该在的区域。
还有其他人看过吗?有什么方法可以捕捉到该区域的点击消息?
【问题讨论】:
-
我找到了解决我的问题的方法,但如果有人能解释原始问题,我会很想知道。像我一样禁用垂直滚动条是我在网上找到的唯一解决方案,所以我相信其他人之前也遇到过。