MFC自绘按钮的原理及具体实现方法有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1332个文字,预计阅读时间需要6分钟。
对于按下式按钮,WM_CTLCOLOR无法完成按钮控件的背景颜色和字体颜色修改。若想实现外观定制,需要添加+WM_DRAWITEM消息处理或重写CButton类中的DrawItem函数,以完成按钮外观的修改。
对于按压式的Button按钮,WM_CTLCOLOR无法完成按钮控件的背景颜色和字体颜色修改,若想要完成外观定制需要添加WM_DRAWITEM消息或者重写CButton类中的DrawItem函数完成按钮外观修改,下面逐一介绍。
自绘制知识基础
自绘制需要的两个基础步骤:
1.控件类型设置为 BS_OWNERDRAW
2.添加WM_DRAWITEM消息响应函数或者重写DrawItem函数。
WM_DRAWITEM消息响应原型如下:
afx_msg void OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct );
参数:
nIDCtl
包含了发送WM_DRAWITEM消息的控件的标识符。如果菜单发送了此消息,则nIDCtl中包含0。
lpDrawItemStruct
指定了指向DRAWITEMSTRUCT数据结构的长指针,其中包含有关要画出的项和要求的绘图类型的信息。
说明:
当控件或菜单的可视状态发生变化时,框架为自画按钮控件、组合框控件、列表框控件或者菜单的拥有者调用这个成员函数。
本文共计1332个文字,预计阅读时间需要6分钟。
对于按下式按钮,WM_CTLCOLOR无法完成按钮控件的背景颜色和字体颜色修改。若想实现外观定制,需要添加+WM_DRAWITEM消息处理或重写CButton类中的DrawItem函数,以完成按钮外观的修改。
对于按压式的Button按钮,WM_CTLCOLOR无法完成按钮控件的背景颜色和字体颜色修改,若想要完成外观定制需要添加WM_DRAWITEM消息或者重写CButton类中的DrawItem函数完成按钮外观修改,下面逐一介绍。
自绘制知识基础
自绘制需要的两个基础步骤:
1.控件类型设置为 BS_OWNERDRAW
2.添加WM_DRAWITEM消息响应函数或者重写DrawItem函数。
WM_DRAWITEM消息响应原型如下:
afx_msg void OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct );
参数:
nIDCtl
包含了发送WM_DRAWITEM消息的控件的标识符。如果菜单发送了此消息,则nIDCtl中包含0。
lpDrawItemStruct
指定了指向DRAWITEMSTRUCT数据结构的长指针,其中包含有关要画出的项和要求的绘图类型的信息。
说明:
当控件或菜单的可视状态发生变化时,框架为自画按钮控件、组合框控件、列表框控件或者菜单的拥有者调用这个成员函数。

