0

添加新项目时,我想滚动到列表视图的末尾。我正在使用来自 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;

该功能有效,除了根本不滚动。

我查看了Scrollin wtl 的源代码,它看起来不错:

BOOL Scroll(SIZE size)
{
        ATLASSERT(::IsWindow(m_hWnd));
        return (BOOL)::SendMessage(m_hWnd, LVM_SCROLL, size.cx, size.cy);
}

那么为什么不滚动呢?我试过n+1了,等等...

4

1 回答 1

3

是的,您按像素滚动。请改用该EnsureVisible函数(它发送LVM_ENSUREVISIBLE)。

于 2011-04-01T18:47:37.940 回答