NM_CUSTOMDRAW消息

本文探讨了控件在接收到NM_CUSTOMDRAW消息时的处理机制,详细解释了uItemState状态项在消息处理过程中的作用,以及不同控件在接收此消息时可能存在的结构差异。通过对MSDN文档的深入研究,帮助读者理解并有效利用NM_CUSTOMDRAW消息进行自定义绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


许多控件都可以收到NM_CUSTOMDRAW消息,但结构却不完全相同。

Control Custom Draw Structure
Rebar, trackbar, and header NMCUSTOMDRAW
List view NMLVCUSTOMDRAW
Tooltip NMTTCUSTOMDRAW
Tree view NMTVCUSTOMDRAW
Toolbar NMTBCUSTOMDRAW

typedef struct tagNMCUSTOMDRAWINFO {
  NMHDR     hdr;           //NMHDR结构包含关于此通知的代码信息。这个结构变量跟OnCustomDraw函数的第一个参数pNMHDR是一样的.
  DWORD     dwDrawStage;   //绘画段,某项被檫出前、后,绘制前、后。这个要着重了解,后面介绍,篇幅较大
  HDC       hdc;           //控件的设备上下文句柄
  RECT      rc;            //要绘制的区域,大小,一般是一个项的区域,如果是大循环则是整个控件的大小。
  DWORD_PTR dwItemSpec;    //项索引,依据控件而来(如CListCtrl),树控件不需要这个变量
  UINT      uItemState;    //项的状态,详见后面
  LPARAM    lItemlParam;   //项关联的数据,通过SetItemData函数设置的。
} NMCUSTOMDRAW, *LPNMCUSTOMDRAW;
先来看看关于dwDrawState在MSDN的取值:
dwDrawStage成员可以有以下值:
CDDS_POSTERASE:清除循环完成后
CDDS_POSTPAINT:绘制循环完成后
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值