在项目中遇到了这样的需求,需要对选中行进行高亮,查了一下相关的资料,记录一下自己采用的方法。
先在List控件所在类中(这里是CListshow,继承于CListCtrl)添加两个变量SelectRow和SelectCol,用于保存鼠标点击的单元格的行数和列数:
class CListshow : public CListCtrl
{
......
int SelectRow = -1;
int SelectCol = -1;
......
}
接着为CListCtrl添加消息响应函数OnNMCustomdraw
OnNMCustomdraw定义如下:
void CListshow::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
CLinkItem *pLink = NULL;
*pResult = 0;
int nItem = -111;
int nSubItem = -111;
COLORREF clrNewTextColor, clrNewBkColor;
//Switch between different draw stages
switch (pLVCD->