滚轴条有问题。我正在尝试在刷新滚动条之前保存滚动条位置,然后再次设置保存位置。我使用以下代码:
SCROLLINFO si;
GetScrollInfo(SB_VERT, &si);
//Then I do stuff related with refresh
SetItemCountEx((int)moElements.GetSize(), LVSICF_NOINVALIDATEALL);
// Then stuff that sort elements...
Invalidate();
SetScrollInfo(SB_VERT,&si);
在此之后,CListCtrl
显示没有滚动条(滚动条只是隐藏在某处),它显示在我选择后,使用向下按钮移动到列表。
什么可能导致这种行为? PS:如果我在SetScrollInfo(SB_VERT,&si)
之前致电Invalidate()
,则无任何变化。
EnsureVisible
的方式部分有效。我可以使用EnsureVisible
,但GetTopIndex
始终返回0
。
答案 0 :(得分:0)
希望您的SetScrollInfo和GetScrollInfo不是Windows api,因为Windows api将HWND作为您的第一个参数。
嗨,我想你应该这样做。
SCROLLINFO si = {};
si.cbSize = sizeof(SCROLLINFO);//This step is always required for backward compatibility
si.fMask = SIF_POS;
GetScrollInfo(Window,SB_VERT,&si);
//Do your stuff.
UINT scrollBarPos = si.nPos;//Save currentPos
SetScrollInfo(Window,SB_VERT,&si,true);
//true parameter will tell Windows to invalidate the screen and redraw.
//No need to call InvalidateRect.