прокручивать clistviewctrl в wtl, когда добавляется новый элемент - PullRequest
0 голосов
/ 01 апреля 2011

Я хочу прокрутить до конца списка, когда добавляется новый элемент. Я использую CListViewCtrl от WTL. Вот моя функция для добавления нового элемента и прокрутки:

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;

Функция работает, за исключением того, что вообще не прокручивает.

Я посмотрел на источник для Scroll в wtl, и он выглядит нормально:

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

Так почему бы не прокрутить? Я пробовал n+1 и т.д ...

1 Ответ

2 голосов
/ 01 апреля 2011

Да, вы прокручиваете по пикселям.Вместо этого используйте функцию EnsureVisible (она отправляет LVM_ENSUREVISIBLE).

...