WTL自绘控件(继承COwnerDraw)

来源:互联网 发布:定义固定长度数组 编辑:程序博客网 时间:2024/05/22 05:52

1.添加自绘控件类,使其派生自COwnerDraw,例如

class MyButtonEx:public CWindowImpl<MyButtonEx, CButton>
,public COwnerDraw<MyButtonEx>

2.在自绘控件类中添加消息映射CHAIN_MSG_MAP_ALT,例如:CHAIN_MSG_MAP_ALT(COwnerDraw<MyButtonEx>, 1)

3.END_MSG_MAP之前要添加DEFAULT_REFLECTION_HANDLER()

4.重写void DrawItem(LPDRAWITEMSTRUCT lpds)等函数,在此函数中完成自绘工作

5.修改自绘控件类的窗口样式,添加OWNERDRAW属性,例如BS_OWNERDRAW

6.不要使用DDX_CONTROL关联控件变量与控件ID!而是使用SubclassWindow来实现,否则看不出自绘效果!(这一点浪费了我半小时找原因)