Windows 控件自绘(基于WTL的ListViewCtrl)
来源:互联网 发布:java微信登录接口开发 编辑:程序博客网 时间:2024/05/24 15:42
Windows的控件提供了自绘的功能,有时默认的界面不能满足我们需要的时候可以对界面直接进行定制,本文简单的介绍了Windows listviewctrl的自绘原理和实现方法,着重介绍了listviewctrl Report模态,仅供抛砖引玉所用,如果有其他高见,尽管拍砖。
ListViewCtrl自绘主要依赖于几个Windows消息:
- WM_MEASUREITEM:定制控件子项的大小,Windows不知道我们想要绘制的项的大小,所以发这个消息来问我们一下。
- WM_DRAWITEM:Windows需要重绘的时候就发这个消息给我们,通知我们对自己的项进行绘制。
- WM_COMPAREITEM:当Windows需要对控件里面的项排序的时候,就发这个消息来问我们:谁大啊?我把它放前面了哦。
- WM_DELETEITEM:Windows删除项的时候给我们发这个消息。
在我们的程序里面只需要对这几个消息进行处理即可。
WTL的COwnerDraw类对这几个消息进行了映射处理,我们只需要覆写其中几个函数即可。
WM_MEASUREITEM 对应MeasureItem函数
WM_DRAWITEM对应DrawItem函数
WM_COMPAREITEM对应CompareItem函数
WM_DELETEITEM 对应DeleteItem函数
当然必须要把COwnerDraw先chain到我们的消息映射表里面。
其他的都比较简单,您可以用DrawText来测试看看是否绘制成功。
需要注意的地方:
- Listviewctrl必须添加项之后才会收到这几个消息。Report模式,比如插入列之后才会有效。
- 如果设置了doublebuffered模式,那么您对系统的背景绘制将无效,系统会再填充一次。
- 系统无效区域的时候只会对item的大小区域进行无效,所以这里可能需要特殊处理才不会出现尴尬的现象。
如果大家有什么问题,可以进行留言。希望能够给您帮助。
- Windows 控件自绘(基于WTL的ListViewCtrl)
- 自绘WTL的CComboBox控件
- WTL自绘控件(继承COwnerDraw)
- 使用WTL自绘控件
- WTL控件的自画操作
- wtl自绘listbox风格控件
- 【WTL】控件自绘之Button
- 【WTL】控件自绘之ProgressBar
- 自绘WTL的CListViewCtrl
- WTL中CTabCtrl的自绘定制
- WTL之自绘
- WTL自绘CListViewCtrl
- WTL-Menu自绘
- WTL-Button自绘
- 编写Windows Mobile上基于WTL封装的CHTMLCtrl程序注意事项(备忘)
- 编写Windows Mobile上基于WTL封装的CHTMLCtrl程序注意事项(备忘)
- 基于WTL Windows Mobile 的自定义滚动条和列表
- WTL按钮自绘机制
- 基础加强第七天
- 鼠眼看Linux调度器 by raise_sail @ chinaunix
- wireless 4965 centos5.4 无线上网
- 备忘:关于serialport 在多线程下的问题
- 创业与"梦想"
- Windows 控件自绘(基于WTL的ListViewCtrl)
- 我的想法
- 2011年工作和学习目标设计
- 输入法极其配置方式式
- 系统找不到指定路径
- error SYSGEN0000: error(s) in sysgen phase 编译错误
- 3500份课后答案,很值得收藏,这里只介绍了一部分。
- Linux:挂接(mount)命令的使用方法
- 某公司笔试题