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);