你好,
感谢你在MSDN论坛发帖。
这边测试当使用LVS_NOSCROLL属性设置CListCtrl时,再调用ShowScrollBar方法时,确实会补出一个不响应的滚动条。针对这种情况,我认为是LVS_NOSCROLL属性所致,推荐你在调用ShowScrollBar前,删除这个属性,在不需要显示这个滚动条时,再给其加上。经测试,可以满足你的需求。以下代码为鼠标移动的消息响应函数,仅供参考。
void CMFCApplication17View::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
m_listctrl.GetWindowRect(&rect);
if ((point.x >= rect.left) && (point.x <= rect.right) && (point.y >= rect.top) && (point.y <= rect.bottom))
{
DWORD dwStype = GetWindowLong(a.GetSafeHwnd(), GWL_STYLE);
dwStype &= ~LVS_NOSCROLL;
SetWindowLong(a.GetSafeHwnd(), GWL_STYLE, dwStype);
m_listctrl.ShowScrollBar(SB_BOTH, TRUE);
}
else
{
DWORD dwStype = GetWindowLong(a.GetSafeHwnd(), GWL_STYLE);
dwStype = dwStype|LVS_NOSCROLL;
SetWindowLong(a.GetSafeHwnd(), GWL_STYLE, dwStype);
m_listctrl.ShowScrollBar(SB_BOTH, FALSE);
}
CView::OnMouseMove(nFlags, point);
}
Best Regards,
Suarez Zhou