我想在添加新项目时滚动到列表视图的末尾。我正在使用WTL的CListViewCtrl。这是我添加新项目和滚动的功能:
void CMainDlg::addMessage(CString msg)
{
m_wndList.InsertItem ( n++, msg);
SIZE size;
size.cx = 0;
size.cy = n;
m_wndList.Scroll(size);
}
n
只是一个全局变量:
int n = 0;
除了不滚动之外,该功能还可以使用。
我在wtl中查看了Scroll
的来源,看起来很不错:
BOOL Scroll(SIZE size)
{
ATLASSERT(::IsWindow(m_hWnd));
return (BOOL)::SendMessage(m_hWnd, LVM_SCROLL, size.cx, size.cy);
}
那为什么不滚动呢?我试过n+1
等等......
答案 0 :(得分:2)
是的,你按像素滚动。请改用EnsureVisible
函数(它发送LVM_ENSUREVISIBLE
)。