clistctrl 如何设定某一行的颜色
1个回答
展开全部
在listctrl的NM_Customdraw消息响应函数里弄:例子如下
LRESULT CXXXDialog::OnNMCustomdrawListLayer(int idCtrl, LPNMHDR pNMHDR, BOOL& bHandled)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
pLVCD->clrFace=RGB(255,0,0);
if ( CDDS_PREPAINT ==pLVCD->nmcd.dwDrawStage )
{
return CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{//这里可以编写代码设置某一行的颜色
int nItem=static_cast<int>(pLVCD->nmcd.dwItemSpec );
if (nItem==1)
{
long r=100;
long g=0;
long b=0;
pLVCD->clrTextBk=RGB(r,g,b);
}
return CDRF_NOTIFYSUBITEMDRAW;
}
else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
{//这里可以设定具体某一行某一格的背景颜色
int nItem=static_cast<int>(pLVCD->nmcd.dwItemSpec );
int nSubItem=pLVCD->iSubItem;
if (nSubItem==4)
{
long r=100;
long g=0;
long b=0;
pLVCD->clrTextBk=RGB(r,g,b);
}
}
return 0;
}
LRESULT CXXXDialog::OnNMCustomdrawListLayer(int idCtrl, LPNMHDR pNMHDR, BOOL& bHandled)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
pLVCD->clrFace=RGB(255,0,0);
if ( CDDS_PREPAINT ==pLVCD->nmcd.dwDrawStage )
{
return CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{//这里可以编写代码设置某一行的颜色
int nItem=static_cast<int>(pLVCD->nmcd.dwItemSpec );
if (nItem==1)
{
long r=100;
long g=0;
long b=0;
pLVCD->clrTextBk=RGB(r,g,b);
}
return CDRF_NOTIFYSUBITEMDRAW;
}
else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
{//这里可以设定具体某一行某一格的背景颜色
int nItem=static_cast<int>(pLVCD->nmcd.dwItemSpec );
int nSubItem=pLVCD->iSubItem;
if (nSubItem==4)
{
long r=100;
long g=0;
long b=0;
pLVCD->clrTextBk=RGB(r,g,b);
}
}
return 0;
}
追问
listctrl的NM_Customdraw消息响应函数怎么没有找到啊,message里没有呀
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
ZESTRON
2024-09-04 广告
2024-09-04 广告
表面污染分析包括评估表面上存在的颗粒、残留物或物质。通过利用显微镜、光谱学和色谱法等技术,分析人员可以识别和表征污染物,以确定其成分和来源。这种分析在电子、制药和制造等各个行业中至关重要,以确保产品质量、性能和安全性。了解表面污染有助于实施...
点击进入详情页
本回答由ZESTRON提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询