首页 理论教育VC++自绘按钮教程,图标和文字的自绘按钮实现

VC++自绘按钮教程,图标和文字的自绘按钮实现

【摘要】:打开本章第4节的“Si”工程,本节将继续开发一个支持自绘的按钮类,实现带图标和文字的按钮。6)在建立好的自绘按钮类头文件中,添加一个用于保存图标的成员变量和一个设置函数。图10-29 设置按钮控件属性11)为三个按钮添加关联变量,在变量类型的下拉控件中选择“CIconButton”,如图10-30所示。14)注意要在主对话框类的头文件中,包含自绘按钮类的头文件。

对于大部分高级控件(例如,按钮),WM_CTLCOLOR的消息映射函数不能控制其颜色。自绘技术顾名思义,如果系统提供的标准控件不漂亮,那么就由开发者自己去绘制这个控件。自绘技术就是进入到控件内部重新绘制控件的外观,把控件装饰得更加漂亮。

打开本章第4节的“Si”工程,本节将继续开发一个支持自绘的按钮类,实现带图标和文字的按钮。

1)新复制三个图标到res子目录下,如图10-22所示。

978-7-111-46378-8-Chapter10-45.jpg

图10-22 导入图标资源

2)在资源视图中导入三个新复制的图标,以备自绘按钮时使用,如图10-23所示。

978-7-111-46378-8-Chapter10-46.jpg

图10-23 准备图标文件

3)修改三个图标的ID(IDI_ADD、IDI_DEL和IDI_MOD),如图10-24所示。

4)在ClassView的根节点上单击鼠标右键,在弹出的快捷菜单中,选择“New Class”命令,如图10-25所示。

978-7-111-46378-8-Chapter10-47.jpg

图10-24 导入后的图标资源ID

978-7-111-46378-8-Chapter10-48.jpg

图10-25 添加新类

5)在新建类的对话框中,输入类名“CIconButton”,并选择CButton作为基类,如图10-26所示。

6)在建立好的自绘按钮类头文件中,添加一个用于保存图标的成员变量和一个设置函数。

978-7-111-46378-8-Chapter10-49.jpg

7)单击“OK”按钮完成图标按钮类的创建,再在创建好的类名称上单击鼠标右键,在弹出的快捷菜单中选择“Add Virtual Function”命令,如图10-27所示。

978-7-111-46378-8-Chapter10-50.jpg

图10-2 6创建CButton派生类

978-7-111-46378-8-Chapter10-51.jpg

图10-27 通过右键菜单添加虚函数

8)执行命令后弹出添加虚函数重写的对话框,如图10-28所示。(www.chuimin.cn)

978-7-111-46378-8-Chapter10-52.jpg

图10-28 添加DrawItem虚函数

9)在左边的虚函数列表中选中“DrawItem”,再单击“Add and Edit”按钮添加编辑虚函数。

978-7-111-46378-8-Chapter10-53.jpg

978-7-111-46378-8-Chapter10-54.jpg

10)在主对话框中修改三个按钮的属性,添加“Owner Draw”的风格,如图10-29所示。

978-7-111-46378-8-Chapter10-55.jpg

图10-29 设置按钮控件属性

11)为三个按钮添加关联变量,在变量类型的下拉控件中选择“CIconButton”,如图10-30所示。

978-7-111-46378-8-Chapter10-56.jpg

图10-30 添加控件型关联变量

12)三个关联变量都是CIconButton类型(m_btnAdd、m_btnDel和m_btnMod),如图10-31所示。

978-7-111-46378-8-Chapter10-57.jpg

图10-31 三个按钮关联变量

13)在对话框初始化函数OnInitDialog中添加三行代码。

978-7-111-46378-8-Chapter10-58.jpg

14)注意要在主对话框类的头文件中,包含自绘按钮类的头文件。

978-7-111-46378-8-Chapter10-59.jpg

15)编译并运行,测试代码,如图10-32所示。

978-7-111-46378-8-Chapter10-60.jpg

图10-32 查看运行结果

自绘技术具有强大的界面装饰能力,对界面的美化程度“只有想不到的,没有做不到的”。