现在想在 CListCtrl 中显示三列:行号 标题 描述信息
1 百度 想知道什么就去百度
2 yahoo ....
3 sohu .....如何在标题列的字体下面加 下划线(___)多谢帮忙
1 百度 想知道什么就去百度
2 yahoo ....
3 sohu .....如何在标题列的字体下面加 下划线(___)多谢帮忙
解决方案 »
- vc++中的average函数怎么用啊
- 求助:ATL做的ActiveX控件为什么JAVA程序无法调用
- 求助:如何做一程序实现将nsc转化为asf文件
- USkin换肤软件所使用的.u3格式的皮肤文件,在那里可以下载?在线等!!!
- [百分求教]使用VC连接操作数据库,最好用什么方法?
- 调色板是用来干什么的?
- 我用VC ATL 编写的控件,在VB里面以及ActiveX测试工具里面可以运行,但是在Delphi中不能运行,为什么?
- 如何用VC删除Excel表中的数据?谢谢!!
- 求使用opengl做模拟3D地球仪源码 ,可旋转,地图可放大缩小的
- 随着.Net的发布,和Delphi的倔起。VC的市场是不是越来越小了?VC用来开发什么呢比较合适?
- demo: MFC与WPF的混合编程
- 关于将一个四边形中的点映射到另一个四边形中的问题
================
自绘是必须的,CListCtrl有个新的特性叫做Custom Draw,具体的你去看下这个:参考
通过各方努力此问题已搞定分享给大家参考:
1,新建一个类继承CListCtrl 如:class CListCtrlEx : public CListCtrl
2, 修改List Control控件的属性:Owner Draw Fixed = true
3,[类视图]tab页找到刚才新建的类找到属性的[重写]tab页中DrawItem方法,内容如下:
void CListCtrlEx::DrawItem(LPDRAWITEMSTRUCT lpDIS /*lpDrawItemStruct*/)
{
if (lpDIS->itemAction & ODA_DRAWENTIRE)
{
CString szText;
for (int i = 0; i < 3; i++)
{
//添加下划线的列号注意列号从0开始
if(i == 2){
CRect rec;
rec = rcItem;
//获取文字长度
CSize textsize = pDC->GetTextExtent(szText);
rec.right = rec.left+textsize.cx; //划线颜色
CPen pen(PS_SOLID,1,RGB(0,255,0));
CPen *oldPen = pDC->SelectObject(&pen);
//划线
pDC->MoveTo(rcItem.left,rcItem.bottom-3);
pDC->LineTo(rec.right,rcItem.bottom-3);
//写文本
pDC->DrawText(szText, lstrlen(szText), &rcItem,DT_VCENTER|DT_NOPREFIX|DT_SINGLELINE);
//其他不用处理的列写文本
}else{
pDC->DrawText(szText, lstrlen(szText), &rcItem,DT_VCENTER|DT_NOPREFIX|DT_SINGLELINE);
}
}
}
}