OnCustomDraw

ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, &CMyListCtrl::OnNMCustomdraw)

ON_NOTIFY : Comes from a child control to the parent. This macro goes in the parent‘s message map.

ON_NOTIFY_REFLECT: Comes from a child control, but is "reflected" back to the child (by the parent)so the child can handle its own notification. This macro goes in the child‘s message map.

ON_NOTIFY_REFLECT_EX: Same as previous, except that the handler function returns a BOOL, indicating whether or not the message should be routed on to parent classes for possible handlers. Note   that   the   reflected   message   is   handled   before   the   notification   message.

我的理解就是一般情况下,ON_NOTIFY是子控件把消息发送给父窗口,由父窗口来处理消息,消息处理函数在父控件的类里面。

如果用了ON_NOTIFY_REFLECT反射,就是说这个消息由子窗口自己来处理

ON_NOTIFY_REFLECT_EX,你仔细观察的话的话会发现很多消息反射形如ON_COMMAND, ON_NOTIFY, ON_RANGE等等,它们都有个扩展形式ON_COMMAND_EX, ON_NOTIFY_EX, ON_RANGE_EX, 微软这么干有什么意图呢,就是这样的:如果你的ON_NOTIFY_REFLECT_EX(消息, 消息处理函数)中的第二个参数也就是消息处理函数的返回值是bool类型的,且返回值是TRUE,那么就是说这个消息会既发给子控件又发给父窗口,即又在子控件里处理该消息,又在父窗口里处理该消息,如果返回值是FLASE的话或者是其他类型的返回值的话,就只发给子控件了,这个时侯ON_NOTIFY_REFLECT_EX就相当于ON_NOTIFY_REFLECT。ON_COMMAND_EX等同理。
时间: 2024-10-28 21:17:02

OnCustomDraw的相关文章

Devexpress VCL Build v2014 vol 14.2.5 发布

和xe8 几乎同一天出来,但是目前官方不支持xe8. The following sections list all minor and major changes in DevExpress VCL 14.2.5. Note that products, controls and libraries which aren't mentioned in the list below are included in the unified installer for compatibility,

VC控件自绘制三步曲

http://blog.csdn.net/lijie45655/article/details/6362441 实现自定义绘制的三步曲 既然您已经了解了绘制控件可用的各种选项(包括使用自定义绘制的好处),那么,让我们来看看实现一个自定义绘制控件需要的三个主要步骤. 执行一个 NM_CUSTOMDRAW 消息处理程序. 指定处理所需的绘制阶段. 筛选特定的绘制阶段(在这些阶段中,您需要加入自己的特定于控件的绘制代码). 执行一个NM_CUSTOMDRAW 消息处理程序 当需要绘制一个公共控件时,M

VC之美化界面(内容覆盖十分全面,经典)

界面美化 摘要本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者.读者最好具有以下VC基础: 1. 大致了解MFC框架的基本运作原理: 2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制: 3. 熟悉OOP理论和技术: 本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助.  正文1. 美化界面之开题篇相信使用过<金山毒霸>.<瑞星杀毒>软件的读者应该还记得它们的精美界面:     图1 瑞星杀毒软件的精美界面程序的功能如何如何强大是一回事

控件绘制的四种方法

OWNER?DRAW实现自绘按钮 一准备工作 在您决定开发 Windows 提供的常规免费自定义控件范围之外的控件之后,您必需确定自己的控件将有多少独到之处 - 在功能和外观两方面.例如,我们假定您正在创建一个类似于计速表的控件.由于公共控件库 (ComCtrl32.dll) 中没有类似的控件,您完全需要自己进行以下操作:编写所有控件功能需要的代码,进行绘制,默认终端用户的交互,以及控件与其父窗口之间需要的任意消息处理. (#add 两方面,公共控件库中没有类似的 完全重写;? 只想调整公共控件

vcl控件经常使用属性和方法

TTabControl属性 DisplayRect:仅仅定该控件客户区的一个矩形 HotTrack:设置当鼠标经过页标签时,它的字是否有变化.假设为True,是字会变成蓝色Images:为每一个页标签加入一个图片MultiLine:假设总页标签的长度大于该控件的宽度时,是否同意多行显示MultiSelect:是否同意多选页标签.该属性仅仅有当Style为tsFlatButtons或tsButtons时才有效OwnerDraw:是否同意自己绘画该控件RaggedRight:指定是否同意标签页伸展到

Delphi 之 工具栏组件(TToolBar)

工具栏组件(TToolBar)为用户提供了快捷菜单的访问方式. Buttions 列出工具栏中的工具按钮,其中保存了TToolButton实例的列表 Canvas 在OnCustomDraw或OnCustomDrawItem事件中使用该属性可以在工具栏上画图. Constraints 规定TToolBar的大小限制 Customizable 设置该属性为True,允许用户在程序运行时添加.删除和移动工具栏按钮.用户可以按Shift键拖动按钮到一个新的位置,或者拖动它离开 CusstiomizeK

[MFC]ListCtrl的扩展用法

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源) 参考文档: MSDN等 1.       ListCtrl首列置为checkbox a. 首先,选择view模式为Report模式 b. 代码中设置属性LVS_EX_CHECKBOXES m_listCtrl.SetExtendedStyle(LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|m_listCtrl.GetExtendedStyle()) c.

VC自绘ListCtrl(III) -- Alternate Row Colors for the CListCtrl

问题是这样的: 一般情况下,如果ListCtrl 的某个 Item 被选中的时候,它的背景会显示为蓝色,这时候如果我们点击一下其它的Button (也就是输入焦点转移到其它控件上去时),刚才这个被选中的item的背景会变成浅灰色,在这种情况下我要让它的背景仍然是蓝色,应该怎么实现?谢谢! http://www.codeproject.com/listctrl/coloredlistctrl.asp Alternate Row Colors for the CListCtrl Download d

TTreeView.OnCustomDrawItem

c++/* The following example shows how the OnCustomDrawItem event handler draws items and lines of the tree view after the OnCustomDraw event handler has filled in the background. */ void __fastcall TCustomDrawForm::TVCustomDrawItem(TCustomTreeView *S