自绘listCtrl控件选中该行高亮(模拟windows)
2024-08-21 03:56:50
CListCtrl的派生类CMyListCtrl的DrawItem()函数里添加代码
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
if (lpDrawItemStruct->itemState && LVIS_SELECTED)
{
CPen PenLine(PS_SOLID, , RGB(, , ));
CPen *OldPenLine = pDC->SelectObject(&PenLine);
rcItem.right -= ;
rcItem.bottom -= ;
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(, , , );
COLORREF m_color = RGB(, , ); for (int i = rcItem.Height() / ; i>; i--)
{
CPen pen(PS_SOLID, , 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(, , ));
}
else
{
pDC->SetTextColor(RGB(, , ));
CBrush brush;
brush.CreateSolidBrush(RGB(, , ));
pDC->FillRect(rcItem, &brush);
}
CString strText = GetItemText(nRow, );
CRect rcSubItem;
GetSubItemRect(nRow, , LVIR_LABEL, rcSubItem);
pDC->DrawText(strText, rcSubItem, DT_CENTER);
PenLine是在框内画线,模仿被选中的样子
图元的线型
PS_SOLID 实线
PS_DASH 虚线
PS_DOT 点线
PS_DASHDOT 点化线
PS_DASHDOTDOT 双点化线
最新文章
- 迷你版jQuery——zepto核心源码分析
- SQL Server 2012 学习笔记2
- 【JAVA】Quartz 任务调度和异步执行器
- Swift面向对象基础(中)——Swift中的存储属性和计算属性
- 【运维手记】virtualbox中centOS安装增强功能
- Postfix 电子邮件系统精要
- rfc的资料
- C#邮件接收系统核心代码(接收POP3邮件IMAP邮件)
- C#构造函数里的base和this的区别
- CF-599B - Spongebob and Joke
- 从零开始学C++之动态创建对象
- 为 Java 程序员准备的 Go 入门 PPT
- 12.scrapy框架之递归解析和post请求
- MySQL行级锁测试
- python中的partition、rpartition
- HTML5 Canvas 小例子 旋转的时钟
- “全栈2019”Java多线程第二十八章:公平锁与非公平锁详解
- 【代码笔记】iOS-动画的跳转
- linux-radhat-gitlab服务搭建
- 模仿Masonary写一个计算器