滑动控件(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 当删除控件后需要通知代码时使用。

你可能感兴趣的:(struct,user)