以下是一个简单的示例,展示如何通过处理 NM_CUSTOMDRAW 消息来修改插入标记的颜色:
// 假设 m_listCtrl 是你的 CListCtrl 对象
// 在消息映射中添加
ON_NOTIFY(NM_CUSTOMDRAW, IDC_YOUR_LIST_CTRL_ID, OnCustomDraw)
// 处理消息的函数
void CYourDialog::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLVCUSTOMDRAW lplvcd = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);
switch (lplvcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
// 在这里处理每个项的自定义绘制
// 可以通过 lplvcd->nmcd.dwItemSpec 获取当前项的索引
// 如果你想要改变插入标记的颜色,可以设置 lplvcd->clrTextBk 或 lplvcd->clrText
// 例如,设置插入标记的背景颜色为红色
if (lplvcd->nmcd.uItemState & CDIS_INSERTED) {
lplvcd->clrTextBk = RGB(255, 0, 0); // 红色背景
}
*pResult = CDRF_DODEFAULT;
break;
}
*pResult = 0;
}
在上述示例中,我们在处理 CDDS_ITEMPREPAINT 阶段判断当前项是否为插入标记,如果是,就通过设置 lplvcd->clrTextBk 来改变插入标记的背景颜色。你可以根据需求修改颜色值。
请注意,具体的实现可能会根据你的需求和应用的架构而有所不同。
转载请注明出处:http://www.zyzy.cn/article/detail/18560/MFC/CListCtrl