滑动控件(CSliderCtrl)的自绘方法引导

滑动控件(CSliderCtrl)的自绘是通过响应 NM_CUSTOMDRAW 消息,其响应函数将获得两个参数

 

void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)

 

其中,

1.pResult指针将传递给控件的父窗口;

2.pHMHDR指针指向了一个NMCUSTOMDRAW结构,该结构定义如下:

 

  typedef struct tagNMCUSTOMDRAWINFO
  {
   NMHDR hdr;//含有通知信息的NMHDR结构;
   DWORD dwDrawStage; //目前绘制的步骤;
   HDC hdc; //设备上下文句柄;
   RECT rc; //绘制的区域;
   DWORD dwItemSpec; //绘制项目条的说明;
   UINT uItemState;//当前项目条的状态
   LPARAM lItemlParam;//应用程序规定的数据;
  }
  NMCUSTOMDRAW, FAR * LPNMCUSTOMDRAW;

 

在消息处理函数中,

1.通过pNMHDR的成员dwDrawStage可以知道目前的绘制步骤,其值如下

 

    CDDS_PREPAINT 准备开始绘制循环

    CDDS_POSTERASE 擦除循环结束

    CDDS_PREERASE 准备开始擦除循环
    CDDS_POSTPAINT 绘制循环结束

 

    CDDS_ITEM 指定dwItemSpec,uItemState,lItemlParam参数有效


    CDDS_ITEMPREPAINT 准备开始列表项绘制

    CDDS_ITEMPOSTPAINT 列表项绘制结束

    CDDS_ITEMPREERASE 列表项准备开始列表项擦除
    CDDS_ITEMPOSTERASE 列表项擦除结束

 

    CDDS_SUBITEM 指定列表子项

 

2.通过dwItemSpe可以知道目前绘制项目条的说明,其值如下:

 

TBCD_TICS: 刻度(MSDN:Identifies the increment tick marks that appear along the edge of the trackbar control. )

TBCD_THUMB: 滑动块(MSDN:Identifies the trackbar control's thumb marker. This is the portion of the control that the user moves. )

TBCD_CHANNEL: 滑动轨道(NSDN:Identifies the channel that the trackbar control's thumb marker slides along. )

 

3.通过uItemState可以知道目前列表项的状态,其值如下: 
    CDIS_SELECTED 选中状态
    CDIS_GRAYED 灰化状态
    CDIS_DISABLED 禁止状态
    CDIS_CHECKED 标记状态 
    CDIS_FOCUS 焦点状态
    CDIS_DEFAULT 默认状态
    CDIS_HOT 热点状态
    CDIS_MARKED 标注状态
    CDIS_INDETERMINATE 不定状态
 
4.返回值
自定义绘制返回标志 

自定义绘制返回标志含义
CDRF_DODEFAULT指示控件自行绘制。该值为默认值,不应该将它与其他值组合在一起。
CDRF_SKIPDEFAULT用于指定控件根本不进行任何绘制。
CDRF_NEWFONT当代码更改绘制项/子项的字体时使用。
CDRF_NOTIFYPOSTPAINT使通知信息在控件或每个项/子项绘制后发送。
CDRF_NOTIFYITEMDRAW 指出项(或子项)将进行绘制。注意,它下面的值与 CDRF_NOTIFYSUBITEMDRAW 相同。
CDRF_NOTIFYSUBITEMDRAW指出子项(或项)将进行绘制。注意,它下面的值与 CDRF_NOTIFYITEMDRAW 相同。
CDRF_NOTIFYPOSTERASE当删除控件后需要通知代码时使用。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ctbinzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值