怎样是选中CListCtrl控件时加亮显示一行,而不是一列?

解决方案 »

  1.   

    将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));
          }
    }
      

  2.   

    m_lstChannel.SetExtendedStyl(m_lstChannel.GetExtendedStyle() | LVS_EX_FULLROWSELECT);把属性设为LVS_EX_FULLROWSELECT就行了