谈谈CListCtrl如何调整行高
来源:互联网 发布:linux iscsi 自动挂载 编辑:程序博客网 时间:2024/05/03 02:27
调整CListCtrl 行高通常有3种方法:
- 设定字体
- 设定图片
- 处理MeasureItem消息。
这里只是谈一谈第3种方法,对于CListCtrl 来说,它只支持owner draw fixed 而不像CListBox 既支持owner draw fixed也支持owner draw variable,这里variable是指行高度是可变的;fixed 指行高度固定。我们虽然很容易在classWizard 找到虚函数DrawItem但却找不到MeasureItem函数。这个时候只能自己动手添加这样的函数,它的原型为:
MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
}
从CListCtrl继承一个类,假如类名叫CTreeList,这样它的函数实现就是这个样子:
void CTreeList::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
}
注意在消息映射部分要添加对WM_MEASUREITEM的反射消息:
ON_WM_MEASUREITEM_REFLECT()
默认情况下,这个消息并不会触发。这时可在PreSubclassWindow()函数中人为触发:
void CTreeList::PreSubclassWindow(){ CRect rcwin; GetWindowRect(rcwin); WINDOWPOS wp; wp.hwnd=m_hwnd; wp.cx=rcwin.Width(); wp.cy=rcwin.Height(); wp.flags=SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER; SendMessage(WM_WINDOWPOSCHANGED,0,(LPARAM)&wp);}
处理MeasureItem消息:
void CTreeList::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct){ lpMeasureItemStruct->itemHeight = m_nItemHeight;}
最后别忘了在构造函数中初始化m_nItemHeight为你想要的值。
这里稍微怪异一点的是为什么发送WM_WINDOWPOSCHANGED反而会触发WM_MEASUREITEM消息。
- 谈谈CListCtrl如何调整行高
- listview 如何调整 行高
- CListCtrl在SetImageList之后,如何去掉图像;;如何改变ClistCtrl行高
- 改变CListCtrl行高
- CListCtrl行高设置
- CListCtrl 设置行高
- CListCtrl 设置行高
- CListCtrl修改行高
- CListCtrl 设置行高
- CListCtrl 修改行高
- CListCtrl行高的修改
- CListCtrl行高的修改
- 【转】CListCtrl 设置行高
- CListCtrl行高的修改
- CListCtrl行高的修改
- CListCtrl行高的修改
- MFC-CListCtrl设置行高
- 隔行调整行高
- 秒杀多线程第七篇 经典线程同步 互斥量Mutex
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法
- 为什么Ollydbg重新启动被调试程序后总是重新分析该程序
- WinDbg配置和使用基础
- 失业的程序员(十四):兄和弟,矛和盾
- 谈谈CListCtrl如何调整行高
- Linux 时间同步配置
- 亿万富豪们给2013年毕业生的忠告
- Savitzky-Golay 滤波器
- Web 开发人员需知的 Web 缓存知识
- iOS中UITextField 全面解析
- UIImagePickerController在iPhone和iPad中用法的一点不同
- vs2010 使用STLport-5.2.1
- c++GDI+发光子与发光边框画法