最近忙于美化界面,然而wince上面提供的功能比桌面上要少的多,网上可供选择的控件也少的可怜(后来发现还是有些的,没有调研就没有发言权啊!:()。好在功夫不负有心人,借鉴别人的代码,也给我倒腾出带图片的按钮、不规则形状按钮、可在每行中显示图片的listctrl。希望最近有时间可以把这些整理出来写成博客,这次先不提这。这里要说的让人迷惑的Custom Draw与Owner draw。
可能有不少人对于这两个概念不怎么了解,或者没有听说过,更不用说它们有什么区别了!不幸的是,我之前也是其中一个...
从字面上来看,custom draw应该可以解释成定制式的绘制,而owner draw可以表达为自定义绘制。那么先看看何谓定制?通俗的说,就是
那么custom draw如何绘制和通知windows你的决定呢?这就必须要处理NM_CUSTOMDRAW消息。接收该消息的函数原型如下:
void OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult )
其中参数pNMHDR包含有控件的窗口句柄,id等,当然重要的是包含了当前所处的绘制阶段信息,总共有4个阶段:
可能你觉得奇怪,这就结束了?本来我是打算根据看的博客原文详细翻译成中文的,可惜被抢先了。那么不如只概要的总体上描述,毕竟不管原文还是翻译的文章都比较长。有兴趣深究的可以看下面的链接:
原文: http://www.codeproject.com/KB/list/lvcustomdraw.aspx?msg=875581
翻译: http://blog.csdn.net/dylgsy/article/details/818550
可能有不少人对于这两个概念不怎么了解,或者没有听说过,更不用说它们有什么区别了!不幸的是,我之前也是其中一个...
从字面上来看,custom draw应该可以解释成定制式的绘制,而owner draw可以表达为自定义绘制。那么先看看何谓定制?通俗的说,就是
- 改变控件的某些属性(控件的背景色),然后让windows来处理绘制的工作。
- 只想自己绘制控件的某些部分,让windows来处理其他的部分。
- 完全自己来绘制整个控件,那么告诉windows什么都不用做。
那么custom draw如何绘制和通知windows你的决定呢?这就必须要处理NM_CUSTOMDRAW消息。接收该消息的函数原型如下:
void OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult )
其中参数pNMHDR包含有控件的窗口句柄,id等,当然重要的是包含了当前所处的绘制阶段信息,总共有4个阶段:
- 画之前
- 画之后
- 擦除之前
- 擦除之后
可能你觉得奇怪,这就结束了?本来我是打算根据看的博客原文详细翻译成中文的,可惜被抢先了。那么不如只概要的总体上描述,毕竟不管原文还是翻译的文章都比较长。有兴趣深究的可以看下面的链接:
原文: http://www.codeproject.com/KB/list/lvcustomdraw.aspx?msg=875581
翻译: http://blog.csdn.net/dylgsy/article/details/818550