zoukankan      html  css  js  c++  java
  • 自绘listCtrl控件选中该行高亮(模拟windows)

    CListCtrl的派生类CMyListCtrl的DrawItem()函数里添加代码

      CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
        if (lpDrawItemStruct->itemState && LVIS_SELECTED)
        {
            CPen PenLine(PS_SOLID, 1, RGB(0, 0, 0));
            CPen *OldPenLine = pDC->SelectObject(&PenLine);
            rcItem.right -= 2;
            rcItem.bottom -= 2;
            pDC->MoveTo(rcItem.left, rcItem.top);
            pDC->LineTo(rcItem.right, rcItem.top);
            pDC->MoveTo(rcItem.left, rcItem.top);
            pDC->LineTo(rcItem.left, rcItem.bottom);
            pDC->MoveTo(rcItem.left, rcItem.bottom);
            pDC->LineTo(rcItem.right, rcItem.bottom);
            pDC->MoveTo(rcItem.right, rcItem.top);
            pDC->LineTo(rcItem.right, rcItem.bottom);
            pDC->SelectObject(OldPenLine);
            rcItem.DeflateRect(2, 2, 2, 2);
            COLORREF m_color = RGB(71, 173, 255);
    
            for (int i = rcItem.Height() / 2; i>0; i--)
            {
                CPen pen(PS_SOLID, 1, m_color);
                CPen *OldPen = pDC->SelectObject(&pen);
                pDC->MoveTo(rcItem.left, rcItem.top + i);
                pDC->LineTo(rcItem.right, rcItem.top + i);
                pDC->MoveTo(rcItem.left, rcItem.bottom - i);
                pDC->LineTo(rcItem.right, rcItem.bottom - i);
                pDC->SelectObject(OldPen);
            }
            pDC->SetTextColor(RGB(255, 255, 255));
        }
        else
        {
            pDC->SetTextColor(RGB(0, 0, 0));
            CBrush brush;
            brush.CreateSolidBrush(RGB(255, 255, 255));
            pDC->FillRect(rcItem, &brush);
        }
        CString strText = GetItemText(nRow, 0);
        CRect rcSubItem;
        GetSubItemRect(nRow, 0, LVIR_LABEL, rcSubItem);
        pDC->DrawText(strText, rcSubItem, DT_CENTER);

    PenLine是在框内画线,模仿被选中的样子

    图元的线型
    PS_SOLID 实线
    PS_DASH 虚线
    PS_DOT 点线
    PS_DASHDOT 点化线
    PS_DASHDOTDOT 双点化线
    赌上我的人生为梦想,即使是臭名远扬,也要我的名字响彻天堂
  • 相关阅读:
    证明欧几里得算法的正确性
    基础练习 十六进制转换八进制
    算法训练 关联矩阵
    寻找数组中最大值
    Torry的困惑(基本型)
    最小乘积(基本型)
    矩阵乘法
    SaltStack Char02 组件
    SaltStack Char01
    Python 学习手册, char 14
  • 原文地址:https://www.cnblogs.com/ye-ming/p/7088454.html
Copyright © 2011-2022 走看看