duilib CListUI滚动条自动滚到底部

duilib CListUI滚动条自动滚到底部

flyfish

在EndDown()失效时使用
原理:定时器处理滚动条,时间间隔50S,处理完关闭定时器
当界面更新50S之后,开始将滚动条滚动到底部

假设有一个窗口CMainWnd
头文件

virtual LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

实现

LRESULT CMainWnd::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
    int  id_event = (int)wParam;
    if (id_event == 1)
    {
        HWND hwnd = m_PaintManager.GetPaintWindow();
        KillTimer(hwnd, 1);
        CListUI *pList = (CListUI *)FIND_CONTROL(L"list_control");
        if (pList == nullptr) return 0;
        SIZE            szScrollRange;
        SIZE            szScrollPos;
        szScrollRange = pList->GetScrollRange();
        szScrollPos = pList->GetScrollPos();


        szScrollPos.cy = szScrollRange.cy;


        pList->SetScrollPos(szScrollPos);


        bHandled = TRUE;
    }
    return 0;
}

使用
在pList->Add之后处理滚动条

    HWND hwnd = m_PaintManager.GetPaintWindow();
    SetTimer(hwnd, 1, 50, NULL);

猜你喜欢

转载自blog.csdn.net/flyfish1986/article/details/80932572