发信人: picture()
整理人: girlrong(1999-11-10 07:19:06), 站内信件
|
一个有多列的CListCtrl控件,如何在选中一个item时让整行都高亮显示, 缺省好象只高亮显示Item项,而不显示SubItem.
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.128.209] ======================================================= 发信人: girlrong (阿蓉), 信区: CLanguage 标 题: Re: 一个有关CListCtrl的问题? 这个问题麻,得先从CListCtrl类派生一个类,然后覆盖OnPaint函数。下面是书 上抄来的示例: void CMyList::OnPaint() { CRect r; int n,n0,n1; CMyListCtrl::OnPaint(); n0=GetTopIndex(); n1=GetCountPerPage(); n1+=n0; CDC*dc=GetDC();//Don't use the CPaintDC for(n=n0;n!=n1;n++) { if(GetItemState(n,LVIS_SELECTED)!=LVIS_SELECTED) continue; GetItemRect(n,&r,LVIR_BOUNDS); r.InflateRect(-2,0); dc->SelectStockObject(HOLLOW_BRUSH); dc->rectangle(&r); } } 该段代码使你在选中一行时,不但该行的开头一段高亮显示,其他段也会被 一个矩形框包围住。 --
=================================================================== 发信人: black (千里孤客), 信区: CLanguage 标 题: Re: 一个有关CListCtrl的问题? 发信站: 网易 BBS (Sat Sep 4 15:00:26 1999), 转信 还有个办法,修改listctrl的扩展风格: long lStyle; lStyle = m_listResult.SendMessageA(0x1037, 0, 0); // 取扩展风格 lStyle |= 0x20; // 扩展风格--选中全部项目 m_listResult.SendMessageA(0x1036, 0, lStyle); // 设置扩展风格 本方法需用Comctl32.dll的版本高于3.71 ------------------------------------------------------------------------------- ============================================================ 发信人: tjam (江南才子), 信区: CLanguage 标 题: Re: 一个有关CListCtrl的问题? 最好的方法: add following to you OnInitDialog() ListView_SetExtendedListViewStyle(m_list.m_hWnd,LVS_EX_FULLROWSELECT); m_list is the control member variable associate with your ListCtrl. 这样一定可以....相信我没错的.
(注:此法只适用于VC++6.0以上版本----版主) --
|
|