+ -
当前位置:首页 → 问答吧 → Report样式的CListView无法滚动到指定行

Report样式的CListView无法滚动到指定行

时间:2011-12-14

来源:互联网

用WM_VSCROLL来实现Report样式的CListView滚动到指定行(如100行).
::SendMessage(m_hWnd,WM_VSCROLL,MAKEWPARAM(SB_THUMBPOSITION,100),NULL);
不成功。但:
::SendMessage(m_hWnd,WM_VSCROLL,MAKEWPARAM(SB_LINEDOWN,0),NULL);//可以成功下滚1行。

::SendMessage(m_hWnd,WM_VSCROLL,MAKEWPARAM(SB_PAGEDOWN,0),NULL);//可以成功下滚1页。

::SendMessage(m_hWnd,WM_VSCROLL,MAKEWPARAM(SB_BOTTOM,0),NULL);//可以成功滚动到屏底。

但就是滚动不到指定行.

跟踪用鼠标拖滚动条时,进入了WM_VSCROLL消息响应函数4次:
nSBCode = SB_THUMBTRACK , nPos = 0
nSBCode = SB_THUMBTRACK, nPos = 100
nSBCode = SB_ THUMBPOSITION, nPos = 100
nSBCode = SB_ENDSCROLL, nPos = 0

模拟同样的参数发送了四次WM_VSCROLL消息:
::SendMessage(m_hWnd,WM_VSCROLL,MAKEWPARAM(SB_THUMBTRACK,0),NULL);//
::SendMessage(m_hWnd,WM_VSCROLL,MAKEWPARAM(SB_THUMBTRACK,100),NULL);//
::SendMessage(m_hWnd,WM_VSCROLL,MAKEWPARAM(SB_THUMBPOSITION,100),NULL);//
::SendMessage(m_hWnd,WM_VSCROLL,MAKEWPARAM(SB_ENDSCROLL,0),NULL);//

进入了WM_VSCROLL消息响应函数跟踪的结果同上,但就是不滚屏,什么原因呀?

作者: firefly3233   发布时间: 2011-12-14

把WM_VSCROLL消息响应函数贴出来看看?

作者: yuucyf   发布时间: 2011-12-14

不是这个代码有问题。
是因为成功不了,我只简单重载一下,来查看参数值,是默认的。
void MyListCtrl::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{

  CListCtrl::OnVScroll(nSBCode, nPos, pScrollBar);
}

作者: firefly3233   发布时间: 2011-12-14

我只是用来跟踪查看参数值的,有没有这段代码,效果是一样的。

作者: firefly3233   发布时间: 2011-12-14