添加新项目时,在wtl中滚动clistviewctrl

时间:2011-04-01 18:37:21

标签: c++ winapi listview wtl

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

1 个答案:

答案 0 :(得分:2)

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