VC++中ListView的标题栏颜色能改吗? 本帖最后由 woailiyan 于 2010-11-05 17:15:45 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以改,百度一下customdrawlistview 我用这个可以修改每一行数据的背景颜色,但是好像改不了标题栏的吧?标题栏没有Item吧?不太清楚。。能说详细点吗? 能说详细点吗?怎么重写?我刚在网上看了一个OnCtlColor这个函数,是用这个吗?谢谢 我尝试做了一下,基本还算顺利。1.插入一个类CHeadWnd,继承于CWnd,所有自绘代码就在这里面完成1.用一个CHeadWnd对象子类化 ClistCtrl的header2.CHeadWnd的Update()成员函数获取 header 的的 标题 和 rect3.在CHeadWnd的OnPaint里自绘。存在的问题。1.当header的每个item改变宽度时,未能及时更新。代码下载:http://cid-3ba16e78a53d2d3d.office.live.com/self.aspx/VC%5EM%5EM/clistctrl%E8%87%AA%E7%BB%98%E6%A0%87%E9%A2%98.zipvc6下编译通过愿顺利,阿弥陀佛! 至于改变高度,我看很高难度。即使Header的高度被改变了,但它会遮住ListCtrl的第一行item啊 codeproject.com 去看看 找找 有一个的 void CxHeader::OnPaint(){ CPaintDC dc(this); CRect trect; CDC mdc; CBitmap bitmap; GetWindowRect(&trect); bitmap.CreateCompatibleBitmap(&dc, trect.Width(), trect.Height()); mdc.CreateCompatibleDC(&dc); mdc.SelectObject( &bitmap ); CBrush tbrush; //颜色在这里设置 m_Color= RGB(000,100,100); tbrush.CreateSolidBrush(m_Color); GetClientRect(&trect); mdc.FillSolidRect(&trect,m_Color); //mdc.FillRect(&trect,&tbrush); SetBkMode(mdc ,TRANSPARENT); int temp=-1; for (int i=0 ; i< GetItemCount() ; i++) { GetItemRect(i,&trect); mdc.DrawText(m_Caption[i] ,&trect,DT_CENTER|DT_SINGLELINE|DT_VCENTER); temp+=trect.Width(); mdc.MoveTo(temp,0); mdc.LineTo(temp,trect.Height()); //画分隔线 } GetWindowRect(&trect); //mdc.Draw3dRect(&trect , 100 , 250); dc.BitBlt(0,0,trect.Width()-1,trect.Height()-1,&mdc,0,0,SRCCOPY); ASSERT(m_pTree); m_pTree->Invalidate(); //通知树型控件,开始重绘} ASSERT(m_pTree);m_pTree->Invalidate(); //通知树型控件,开始重绘这是错的吧,OnPaint里面加这个,会反复刷新的吧,这太闪烁了,可是我删掉这行,高度也只有当我拖拽HAEDER的时候才刷新,有高人指点解决此问题吗? 关于GetMenu()->GetSubMenu()的用法. 救命,重用SOCKET问题? opengl中怎么样人物模型的跳跃? 问2个简单的问题 新人提问:关于IOCP例子中一句代码的理解? 谁发一份“远程桌面控制”的代码给我,VC6.0代码 一个关于软件界面的问题,100分立送! 对话框程序的错误 softice的显示字体太小,怎样调大,用那个命令 <C++>有没大侠知道 设备管理器 禁用 启用 磁盘的命令啊... 发帖质疑,突然少了1000分专家分 vs2008 tab 问题
1.用一个CHeadWnd对象子类化 ClistCtrl的header
2.CHeadWnd的Update()成员函数获取 header 的的 标题 和 rect
3.在CHeadWnd的OnPaint里自绘。存在的问题。
1.当header的每个item改变宽度时,未能及时更新。代码下载:http://cid-3ba16e78a53d2d3d.office.live.com/self.aspx/VC%5EM%5EM/clistctrl%E8%87%AA%E7%BB%98%E6%A0%87%E9%A2%98.zip
vc6下编译通过愿顺利,阿弥陀佛!
{
CPaintDC dc(this);
CRect trect;
CDC mdc;
CBitmap bitmap; GetWindowRect(&trect);
bitmap.CreateCompatibleBitmap(&dc, trect.Width(), trect.Height());
mdc.CreateCompatibleDC(&dc);
mdc.SelectObject( &bitmap );
CBrush tbrush;
//颜色在这里设置
m_Color= RGB(000,100,100);
tbrush.CreateSolidBrush(m_Color); GetClientRect(&trect);
mdc.FillSolidRect(&trect,m_Color);
//mdc.FillRect(&trect,&tbrush);
SetBkMode(mdc ,TRANSPARENT); int temp=-1;
for (int i=0 ; i< GetItemCount() ; i++)
{
GetItemRect(i,&trect);
mdc.DrawText(m_Caption[i] ,&trect,DT_CENTER|DT_SINGLELINE|DT_VCENTER);
temp+=trect.Width();
mdc.MoveTo(temp,0);
mdc.LineTo(temp,trect.Height()); //画分隔线
} GetWindowRect(&trect);
//mdc.Draw3dRect(&trect , 100 , 250);
dc.BitBlt(0,0,trect.Width()-1,trect.Height()-1,&mdc,0,0,SRCCOPY); ASSERT(m_pTree);
m_pTree->Invalidate(); //通知树型控件,开始重绘}
m_pTree->Invalidate(); //通知树型控件,开始重绘这是错的吧,OnPaint里面加这个,会反复刷新的吧,这太闪烁了,可是我删掉这行,高度也只有当我拖拽HAEDER的时候才刷新,有高人指点解决此问题吗?