如何在WTL中的修改ListViewCtrl中某一行字体的颜色 字体rgblistview 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WTL不太清楚,MFC中CListCtrl的话,重写该类,添加处理DrawItem虚函数,在DrawItem中设置 网上一大堆这方面MFC编码,我看了,尝试了,不行,哎…… 无奈WTL就不行,能力有限~ NOTIFY_HANDLER(IDC_LIST1, NM_CUSTOMDRAW, OnNMCustomdrawList1)LRESULT OnNMCustomdrawList1(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/);LRESULT CMainDlg::OnNMCustomdrawList1(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/){ LPNMLVCUSTOMDRAW pLVNMCD = reinterpret_cast< LPNMLVCUSTOMDRAW>(pNMHDR); int nResult = CDRF_DODEFAULT; if (CDDS_PREPAINT == pLVNMCD->nmcd.dwDrawStage) { nResult = CDRF_NOTIFYITEMDRAW; } else if (CDDS_ITEMPREPAINT == pLVNMCD->nmcd.dwDrawStage) { nResult = CDRF_NOTIFYSUBITEMDRAW; } else if (pLVNMCD->nmcd.dwDrawStage == (CDDS_ITEMPREPAINT|CDDS_SUBITEM)) { //单双行不同颜色 if (pLVNMCD->nmcd.dwItemSpec%2 == 0) { pLVNMCD->clrText = RGB(60, 128, 160); } else { pLVNMCD->clrText = RGB(80, 160, 80); } } return nResult;} 重点是我想写个那种类似SetItemColor的接口,该如何写,你这个是单双行不同颜色,我用m_lstFileList.SetItemData(nRow, (DWORD)clrNewColor);但是每次运行都报错,控件和对象也都关联了,不知道为什么? 你是想这样吗?INT nItem = pLVNMCD->nmcd.dwItemSpec;//行INT nSubItem = pLVNMCD->iSubItem; //列if (nItem==3 && nSubitem==3)//第4行的第4列文字颜色设置为RGB(60, 128, 160);{ pLVNMCD->clrText = RGB(60, 128, 160);} 对,是想封装这个ListViewCtrl,想写一个接口函数,昨天晚上憋了一晚上,感觉不好写。 私信Me,留个email。我比较推荐继承并嵌入COwnerDraw重载DrawItem。你的问题可能是,必须在ListViewCtrl的父窗口的消息映射中加上DEFAULT_REFLECTION_HANDLER() 发不了私信,呵呵~ 不是很清楚CCustomDraw和COwnerDraw到底有什么不同,在开发过程中自定义控件,特别是要重绘的话,两者之间的区别和联系? 发不了私信,呵呵~ 不是很清楚CCustomDraw和COwnerDraw到底有什么不同,在开发过程中自定义控件,特别是要重绘的话,两者之间的区别和联系?http://hi.baidu.com/sumos/item/e3ae61e664713f3c4cdcaf0f我之前自绘ListViewCtrl的代码,不太全,你可以参考一下 感觉不用写很多代码了。DWORD CListViewCtrlEx::OnItemPrePaint(int /*idCtrl*/, LPNMCUSTOMDRAW lpNMCustomDraw){ NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( lpNMCustomDraw ); 伪代码:if(pLVCD->nIndex==12) pLVCD->clrText = RGB(128, 128, 128); return CDRF_DODEFAULT; //这里面不是很会写了 可能是CDRF_NEWFONT,这里你查下MSDN} VC6.0用soap调用web service接口传复合参数问题(即传一个结构体) vc6.0编译出错,谁能帮帮我啊 钩子的奇怪问题 高手请进 有挑战性 ceditview的编辑框中两个空格的宽度才相当于一个半角的宽度,这是为什么?怎么能使一个空格占用一个半角宽度? 如何判断两个中文自然语句的相似程度? 请教一个关于网络基础的问题`` 数据的保存问题!!请进来看看啊 存一个JPG文件到数据库里再读取来怎么填到EXCEL里去?BMP文件可以实现 求救,如何给CTime赋值(找不到MSDN,只能求助CSDN了) DLL无法调用 多线程服务器 小代码,大问题 求高手解答
网上一大堆这方面MFC编码,我看了,尝试了,不行,哎…… 无奈WTL就不行,能力有限~
LRESULT CMainDlg::OnNMCustomdrawList1(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/)
{
LPNMLVCUSTOMDRAW pLVNMCD = reinterpret_cast< LPNMLVCUSTOMDRAW>(pNMHDR);
int nResult = CDRF_DODEFAULT;
if (CDDS_PREPAINT == pLVNMCD->nmcd.dwDrawStage)
{
nResult = CDRF_NOTIFYITEMDRAW;
}
else if (CDDS_ITEMPREPAINT == pLVNMCD->nmcd.dwDrawStage)
{
nResult = CDRF_NOTIFYSUBITEMDRAW;
}
else if (pLVNMCD->nmcd.dwDrawStage == (CDDS_ITEMPREPAINT|CDDS_SUBITEM))
{
//单双行不同颜色
if (pLVNMCD->nmcd.dwItemSpec%2 == 0)
{
pLVNMCD->clrText = RGB(60, 128, 160);
}
else
{
pLVNMCD->clrText = RGB(80, 160, 80);
}
}
return nResult;
}
重点是我想写个那种类似SetItemColor的接口,该如何写,你这个是单双行不同颜色,我用m_lstFileList.SetItemData(nRow, (DWORD)clrNewColor);但是每次运行都报错,控件和对象也都关联了,不知道为什么?
INT nItem = pLVNMCD->nmcd.dwItemSpec;//行
INT nSubItem = pLVNMCD->iSubItem; //列if (nItem==3 && nSubitem==3)//第4行的第4列文字颜色设置为RGB(60, 128, 160);
{
pLVNMCD->clrText = RGB(60, 128, 160);
}
对,是想封装这个ListViewCtrl,想写一个接口函数,昨天晚上憋了一晚上,感觉不好写。
我比较推荐继承并嵌入COwnerDraw重载DrawItem。
你的问题可能是,必须在ListViewCtrl的父窗口的消息映射中加上
DEFAULT_REFLECTION_HANDLER()
不是很清楚CCustomDraw和COwnerDraw到底有什么不同,在开发过程中自定义控件,特别是要重绘的话,两者之间的区别和联系?
不是很清楚CCustomDraw和COwnerDraw到底有什么不同,在开发过程中自定义控件,特别是要重绘的话,两者之间的区别和联系?
http://hi.baidu.com/sumos/item/e3ae61e664713f3c4cdcaf0f
我之前自绘ListViewCtrl的代码,不太全,你可以参考一下
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( lpNMCustomDraw );
伪代码:if(pLVCD->nIndex==12)
pLVCD->clrText = RGB(128, 128, 128);
return CDRF_DODEFAULT; //这里面不是很会写了
可能是CDRF_NEWFONT,这里你查下MSDN
}