整容说文库 > 程序代码 > 教育资讯

一个ListView的问题,滚动列表框使特定的项成为可见的最上面项

来源:学生作业帮助网 编辑:整容说文库 时间:2021/05/19 07:29:47 程序代码
一个ListView的问题,滚动列表框使特定的项成为可见的最上面项程序代码
rt,我已经取得了ListView的特定项的序号,怎么使该特定项成为可见的最上面项呢,最好可以加亮显示
mark
//先把你现在选择的状态取消掉。
POSITION it=m_list.GetFirstSelectedItemPosition();
if(it!=NULL)
m_list.SetItemState((int)(it-1),0,LVIS_SELECTED);
//对特定的项进行显示并选择
m_list.EnsureVisible(nItem,TRUE);
m_list.SetItemState(nItem,LVIS_SELECTED,LVIS_SELECTED);
::SetFocus(m_list.GetSafeHwnd());
上述功能可以使特定的项可见,并加亮显示,但不是在最上面,究竟在那里,分3种情况:
1.特定项不可见,可见项在特定项的上面,则特定项显示在可见区域的最下面。
2.特定项可见,则不动,只是加亮。
3.特定项不可见,可见项在特定项的下面,则特定项显示在最上面。
加上特定背景色。具体的代码我忘记了,你可以在网找一下。
自己算一下位置吧,然后滚动一下,

nTop = GetTopIndex() ;
CSize  sizeScroll ;
sizeScroll.cx = 0 ;
sizeScroll.cy = ( nPost - nTop ) * 19 ; //这个19是每列的高度。。。
Scroll( sizeScroll ) ;


程序代码