社区
界面
帖子详情
CListCtrl中的表头高度怎么动态设定?
wangbab
2003-08-20 04:57:07
我已经做到ListCtrl的Item行高可以动态设定。因为运行中的Item数量是变化的。我改变每个Item的高度使其能均匀分布。可是表头不能动态改变,造成表头与Item的高度不成比例,怎么办?
...全文
454
8
打赏
收藏
CListCtrl中的表头高度怎么动态设定?
我已经做到ListCtrl的Item行高可以动态设定。因为运行中的Item数量是变化的。我改变每个Item的高度使其能均匀分布。可是表头不能动态改变,造成表头与Item的高度不成比例,怎么办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangbab
2003-08-25
打赏
举报
回复
再顶
wangbab
2003-08-22
打赏
举报
回复
自己顶一下
serverclient
2003-08-21
打赏
举报
回复
呵呵,具体的Column显示问题你可以自己编写CHeaderCtrl,然后利用SubClass技术,在自己的CMyListCtrl的PreSubClassWindow中添加处理函数,或者干脆加一个InitHeader之类的东西,高度嘛,我原先重载了MeasureItem但是不可以。
最后用了一个土土的办法:改变CHeaderCtrl的字体比如CFont的CreatePointFont设定字体的高度的时候设定一下就可以了。
在CMyListCtrl中
CHeaderCtrl *pOriginalHeader = GetHeaderCtrl() ; //这个是CListCtrl的成员函数
VERIFY(m_customHeader.SubClassWindow(pOriginalHeader->m_hWnd) != NULL) ;
m_customHeader.SetFont(&m_highFont) ; //呵呵,这里做一个大的Font即可
现在这样应该就可以了。
然后自己重载CHeaderCtrl,重写它的OnPaint即可,注意此时,不要改变原有的Font,
否则Header就会变小:p,你可以自己创建一个临时的font然后画在内存DC上,然后利用Bitblt
向CPaintDC dc上贴图。
总之,这是一个土办法,后来我看MSDN上有什么SetColumn函数需要填写一个LVCOLUMN的结构体,应该也可以完成上述功能。我就是嫌它麻烦:)
Phourm
2003-08-21
打赏
举报
回复
简单办法 m_pListCtrl->GetHeaderCtrl()->SetFont(&font);
这个字体你建一个很大的就OK了,不过如果你想HEADER上的字小,位置大那还得自己继承CHeaderCtrl然后自己画HeaderCtrl
wangbab
2003-08-21
打赏
举报
回复
我试过MearureItem和DrawItem,都只能在控件初始化是改变高度(即第一次创建时),若在运行时改变表头行高就报错。
我参考的是www.codeguru.com上的一个例子。
wuxfBrave
2003-08-21
打赏
举报
回复
自己画控件试试看,重载MesaureItem和DrawItem
wangbab
2003-08-21
打赏
举报
回复
自己顶一下,求高手解答
wangbab
2003-08-21
打赏
举报
回复
serverclient(郁闷)
做一个大的Font不可行,高度很大时,字体太大了。
我用的MeasureItem,
void CMyListCtrl::MeasureItem ( LPMEASUREITEMSTRUCT lpMeasureItemStruct )
{
CRect rect;
GetClientRect(rect);
m_nDivX=rect.Width()/(m_nOutPortNumber+1);
m_nDivY=rect.Height()/(m_nInPortNumber+1);
//m_nDivX、m_nDivY分别为均分的宽、高。
lpMeasureItemStruct->itemHeight=m_nDivY;
lpMeasureItemStruct->itemWidth=m_nDivX;
}
void CMyListCtrl::ResetColumnIem()
{
删除所有列,所有条目。重新添加列,条目。
}
控件条目改变时,删除所有列、条目,重新加入条目和列。
比如在View中调用SetOutPortNumber()//设定控件的列数
CMyView::SetOutPortNumber(int nNew)
{
m_MyList.m_nOutPort=nNew;
m_MyList.ResetColumnItem();//重设所有条目,列。
}
以上可以满足动态改变行高和列高。
对于你说的重载CHeaderCtrl,利用SubClass,我也试过,可是运行时会出错。
Debug Assertion Failed!
Program ....
File:wincore.cpp
line:312
For information on how your program can cause an assertion
failure,see the Visual C++ documentation on asserts.
CLi
stCtrl
控件功能扩展总结
最近需要开发一个功能丰富的
CLi
stCtrl
控件(report样式),包括自定义
表头
、背景、文字颜色、行高、加载缩略图、ToolTip、拖拽、加载进度条控件、排序等功能。在MFC的框架
中
,采用继承
CLi
stCtrl
子类的实现方式应该是一种比较简单有效的方法,这样就不可避免的涉及到控件自绘技术,和一些GDI+技术。本文主要对控件自绘
中
的一些问题进行总结。 一、所有者绘制(owner
CLi
stCtrl
控件功能扩展总结 .
所有者绘制(owner-draw)和自定义绘制(custom-draw) 这两种方法应该是控件自绘
中
最常用到的普遍方法。(当然如果只是改变控件颜色只需要处理WM_CTLCOLOR消息就可以了。)但是对于这两者的区别,可能很多开发人员并不是很清楚。如果你做过控件自绘,可能对owner-draw已经很熟悉了。一般只要设置控件的自绘风格属性,并实现owner-draw的消息(WM_DRAWIT
Grid Control
介绍
当我努力为显示和编辑现有表
中
的数据而使用
CLi
stCtrl
到了极限之后,我意识到我所需要的只不过是一个专用的Grid控件而已。于是我开始着手写自己的Grid控件,但为了节省时间我决定修改Joe Willcoxson's的免费控件WorldCom,你可以在以下站点 http://users.aol.com/chinajoe/wcmf
cli
b.html 找到这个东东。为了让它能做我要做的事情,我分解了他的代码,并且重新修改。由于代码经过太多的修改,我甚至不能确信最终是否还存在最初
界面编程总结(1)
我们在做程序设计时界面与功能,那个更加吸引用户的兴趣呢?这是一个很难回答的问题。拥有美丽的外观,软件就成功了一半。界面由控件、工具栏、菜单、窗体等元素组成,对他们进行美化就能得到一个美丽的界面。
目前界面编程技术包括MFC、win32 SDK 、CJLibrary、WTL以及一些界面开发包。文本介绍MFC界面编程技术。
一、控件自绘
控件的生成包括静态控件和
动态
控件的生成。
动态
控件是在应用程序运行过程
中
临时产生的。所以在进行
动态
控件的自绘时,方法比自绘静态控件复杂些。应该考虑控
VC 界面编程总结
我们在做程序设计时界面与功能,那个更加吸引用户的兴趣呢?这是一个很难回答的问题。拥有美丽的外观,软件就成功了一半。界面由控件、工具栏、菜单、窗体等元素组成,对他们进行美化就能得到一个美丽的界面。 目前界面编程技术包括MFC、win32 SDK 、CJLibrary、WTL以及一些界面开发包。文本介绍MFC界面编程技术。 一、控件自绘 控件的生成
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章