怎样是选中CListCtrl控件时加亮显示一行,而不是一列?
怎样是选中CListCtrl控件时加亮显示一行,而不是一列? 问题点数:20、回复次数:3Top
1 楼qvly()回复于 2002-09-06 18:23:26 得分 10
将CListCtrl设置成OWNER_DRAW,在CListCtrl的继承类的DrawItem()函数中将该行画上高亮颜色:
CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
UINT nCtlType = lpDrawItemStruct->CtlType;//控件类型
UINT nItemID = lpDrawItemStruct->itemID; //项ID
UINT nItemAction = lpDrawItemStruct->itemAction; //项动作
CRect cRect(lpDrawItemStruct->rcItem); //项矩形
switch(nCtlType)
{
case ODT_LISTVIEW:
CDC* pDC = CDC::FromHandle(hDC);
switch(nItemAction)
{
case ODA_FOCUS:
case ODA_SELECT:
case ODA_DRAWENTIRE:
if((nItemState & ODS_SELECTED) && (nItemState & ODS_FOCUS))
{
pDC->SetTextColor(GetSysColorCOLOR_HIGHLIGHTTEXT));
pDC->FillSolidRect(&cRect, GetSysColor(COLOR_HIGHLIGHT));
}
else
{
pDC->SetTextColor(GetSysColor(COLOR_WINDOWTEXT));
pDC->FillSolidRect(&cRect, GetSysColor(COLOR_WINDOW));
}
}Top
2 楼vtable9999(肝肝肝肝)回复于 2002-09-06 18:28:18 得分 7
m_lstChannel.SetExtendedStyl(m_lstChannel.GetExtendedStyle() | LVS_EX_FULLROWSELECT);
把属性设为LVS_EX_FULLROWSELECT就行了
Top
3 楼sh210(.....)回复于 2002-09-06 18:39:09 得分 3
markTop




