NM_CUSTOMDRAW通知代码

通知控件的父窗口有关自定义绘制操作的信息。 此通知代码以 WM_NOTIFY 消息的形式发送。

NM_CUSTOMDRAW

#ifdef LIST_VIEW_CUSTOM_DRAW

    lpNMCustomDraw = (LPNMLVCUSTOMDRAW) lParam;

#elif TOOL_TIPS_CUSTOM_DRAW

    lpNMCustomDraw = (LPNMTTCUSTOMDRAW) lParam;

#elif TREE_VIEW_CUSTOM_DRAW

    lpNMCustomDraw = (LPNMTVCUSTOMDRAW) lParam;

#elif TOOL_BAR_CUSTOM_DRAW

    lpNMCustomDraw = (LPNMTBCUSTOMDRAW) lParam;

#else

    lpNMCustomDraw = (LPNMCUSTOMDRAW) lParam;

#endif

参数

lParam

指向包含绘图操作相关信息的自定义绘图相关结构的指针。 以下列表指定控件及其关联的结构。

控制 自定义绘图结构
Rebar、trackbar 和 header NMCUSTOMDRAW
列表视图 NMLVCUSTOMDRAW
工具提示 NMTTCUSTOMDRAW
树视图 NMTVCUSTOMDRAW
工具栏 NMTBCUSTOMDRAW

返回值

应用程序可以返回的值取决于当前绘图阶段。 关联的 NMCUSTOMDRAW 结构的 dwDrawStage 成员包含一个指定绘图阶段的值。 必须返回以下值之一。

返回代码 说明
CDRF_DODEFAULT
控件将自行绘制。 它不会为此绘制周期发送其他 NM_CUSTOMDRAW 通知代码。 此标志不能与任何其他标志一起使用。
CDRF_DOERASE
控件将仅绘制背景。
CDRF_NEWFONT
应用程序为项指定了新字体;控件将使用新字体。 有关更改字体的详细信息,请参阅 更改字体和颜色。 当 dwDrawStage 等于 CDDS_ITEMPREPAINT 时,将发生这种情况。
CDRF_NOTIFYITEMDRAW
控件将通知父级任何与项相关的绘图操作。 它将在绘制项前后发送 NM_CUSTOMDRAW 通知代码。 当 dwDrawStage 等于 CDDS_PREPAINT 时,将发生这种情况。
CDRF_NOTIFYPOSTERASE
控件将在擦除项后通知父级。 当 dwDrawStage 等于 CDDS_PREPAINT 时,将发生这种情况。
CDRF_NOTIFYPOSTPAINT
当整个控件的绘制周期完成时,控件将发送 NM_CUSTOMDRAW 通知代码。 当 dwDrawStage 等于 CDDS_PREPAINT 时,将发生这种情况。
CDRF_NOTIFYSUBITEMDRAW
应用程序将收到 一个NM_CUSTOMDRAW 通知代码,其中 dwDrawStage 设置为 CDDS_ITEMPREPAINT |在绘制每个列表视图子项之前CDDS_SUBITEM。 然后,可以单独指定每个子项的字体和颜色,或返回 CDRF_DODEFAULT 进行默认处理。 当 dwDrawStage 等于 CDDS_ITEMPREPAINT 时,将发生这种情况。
CDRF_SKIPDEFAULT
应用程序手动绘制项。 控件不会绘制项。 当 dwDrawStage 等于 CDDS_ITEMPREPAINT 时,将发生这种情况。
CDRF_SKIPPOSTPAINT
控件不会在项周围绘制焦点矩形。

备注

目前,以下控件支持自定义绘制功能:标题、列表视图、rebar、工具栏、工具提示、跟踪条和树视图。 如果具有应用程序清单以确保Comctl32.dll版本 6 可用,则按钮控件也支持自定义绘制。

如果在对话过程中处理此消息,则必须在返回 TRUE 之前将返回值设置为窗口数据的一部分。 有关详细信息,请参阅 DialogProc

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
标头
Commctrl.h

另请参阅

概念性

自定义绘图