WTL自绘控件(继承COwnerDraw)

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来实现,否则看不出自绘效果!(这一点浪费了我半小时找原因)

posted @ 2012-11-08 23:40  特洛伊人  阅读(2196)  评论(0编辑  收藏  举报