精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>WINDOWS界面设计>>CListCtrl中高亮显示一行的所有列

主题:CListCtrl中高亮显示一行的所有列
发信人: 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以上版本----版主)
--

[关闭][返回]