效果预览:
1.行高
//暂时提供一种用图片设置行高的方法
CImageList imagelist;
imagelist.Create(1, 30, ILC_COLOR, 1, 1);
m_List.SetImageList(&imagelist, LVSIL_SMALL);
2.字体
CFont* font = CFont::FromHandle(hfont);
SetFont(font);
//高度 宽度 显示角度 角度 磅数 斜体 下划线 删除线 字符集 输出精度 裁剪精度 逻辑字体与输出设备的实际字体之间的精度 字间距 字体名
m_FontTextList.CreateFontA(16, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, "宋体");
m_FontBdcat.CreateFontA(16, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, NULL);
m_List.SetFont(&m_FontTextList);
3.字体和背景颜色
//头文件
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
afx_msg void OnPaint();
afx_msg void OnCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult);
DECLARE_MESSAGE_MAP()
//cpp
//添加消息映射
BEGIN_MESSAGE_MAP(UGTest, CDialogEx)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST_UG, OnCustomdrawList)
END_MESSAGE_MAP()
//自绘表格
void UGTest::OnCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTVCUSTOMDRAW pNMCD = reinterpret_cast<LPNMTVCUSTOMDRAW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
NMCUSTOMDRAW nmCustomDraw = pNMCD->nmcd;
switch (nmCustomDraw.dwDrawStage)
{
case CDDS_ITEMPREPAINT:
if (COLOR_BLUE == nmCustomDraw.lItemlParam)
{
//pNMCD->clrTextBk = RGB(255, 255, 255);
pNMCD->clrText = RGB(86, 156, 214);
}
else if (COLOR_GREEN == nmCustomDraw.lItemlParam){
//pNMCD->clrTextBk = RGB(255, 255, 255); //背景颜色
pNMCD->clrText = RGB(10, 148, 28); //文字颜色
}
else if (COLOR_RED == nmCustomDraw.lItemlParam)
{
//pNMCD->clrTextBk = RGB(255, 255, 255); //背景颜色
pNMCD->clrText = RGB(247, 76, 49); //文字颜色
}
else if (COLOR_DEFAULT == nmCustomDraw.lItemlParam)
{
//pNMCD->clrTextBk = RGB(255, 255, 255);
//pNMCD->clrText = RGB(0, 0, 0);
}
else{
}
COLORREF crBk; //奇偶判断 crText,
if ((nmCustomDraw.dwItemSpec % 2) == 0){
//crText = RGB(0, 0, 0);//RGB(32,32,255);
crBk = RGB(255, 255, 255);
}
else if ((nmCustomDraw.dwItemSpec % 2) == 1){
//crText = RGB(0, 0, 0);
crBk = RGB(228, 236, 249);
}
else{
//crText = RGB(0, 0, 0);
crBk = RGB(0, 0, 126);
}
//pNMCD->clrText = crText;
pNMCD->clrTextBk = crBk;
break;
default:
break;
}
*pResult = 0;
*pResult |= CDRF_NOTIFYPOSTPAINT; //必须有,不然就没有效果
*pResult |= CDRF_NOTIFYITEMDRAW; //必须有,不然就没有效果
return;
}