从自定义的空白窗口开始开发出一个控件,无疑是比较辛苦的工作。其实前面章节中的自绘控件,就是一种特殊控件二次开发的方法,但有很多控件没有自绘属性。不支持自绘的控件进行二次开发,主要是编写代码改造控件的绘图和操作的消息映射函数,如OnPaint和OnMouseMove等。3)在类视图中添加一些窗口显示与鼠标操作相关的消息映射函数,如图11-19所示。显然基于标准控件的二次开发,比从空白窗口开始重新开发控件的过程简单很多。......
2023-11-25
自绘按钮是最容易开发的自绘控件,其他支持自绘的界面对象还有组合控件、列表控件以及自绘菜单等。开发这些自绘界面的难度要大一些,例如,组合控件要自绘下拉列表中的每一项,列表控件还要对不同的行和列进行处理等。
打开本章第5节的“Si”工程,本节将继续开发一个带图标和文字的组合控件。
1)修改国籍组合控件的属性,选择Owner draw中的Variable选项,如图10-33所示。
图10-33 设置组合框控件的属性
2)清除Data中的数据,如图10-34所示。
图10-34 清除Data中的数据
3)在类视图的根节点上单击鼠标右键,在弹出的快捷菜单中,选择“New Class”命令,新建一个MFC派生类,如图10-35所示。
图10-35 创建CComboBox派生类
4)在建立好的组合控件类头文件中,添加一些成员变量用于保存下拉列表项的信息。
5)在构造函数中初始化成员变量。
6)在类视图中的CIconCombo类名称上单击鼠标右键,在弹出的快捷菜单中,选择“Add Member Function”命令,创建普通成员函数,如图10-36所示。
图10-36 添加普通成员函数
7)这是基类同名函数的重写函数,修改该函数的代码。
8)用同样的方法,添加普通成员函数并修改函数代码。
9)用同样的方法,添加普通成员函数并修改函数代码。
10)用同样的方法,添加普通成员函数并修改函数代码。(www.chuimin.cn)
11)用同样的方法,添加普通成员函数并修改函数代码。
12)在类视图中为CIconCombo类添加两个虚函数,如图10-37所示。
图10-37 通过右键菜单添加虚函数
13)虚函数MeasureItem根据下拉列表项的索引,设置项的高度和宽度。
14)虚函数DrawItem根据下拉列表项的索引,绘制每项图标和文字。
15)添加WM_DESTROY的消息映射函数OnDestroy。
16)在类向导中删除CComboBox关联变量,重现建立CIconCombo类型关联变量,如图10-38所示。
图10-38 添加控件型关联变量
17)在对话框初始化函数OnInitDialog中,添加代码初始化自绘的组合控件。
18)注意要在主对话框类的头文件中,包含自绘控件类的头文件。
19)编译并运行,测试代码,如图10-39所示。
图10-39 查看运行结果
组合控件在设置了自绘属性之后,一些文字相关函数全部都失效了,因此,要在派生类中重写这些函数。例如,AddString、InsertString和GetLBText等。
如果选择Owner draw的Fixed属性,则下拉列表中的每项高宽由系统自动设置,MeasureItem虚函数不被回调;如果选择Variable属性,则下拉列表中的每项高宽由用户设置,在MeasureItem回调函数中可以设置不同高度列表项。
有关VC++就业培训宝典之MFC视频教程的文章
从自定义的空白窗口开始开发出一个控件,无疑是比较辛苦的工作。其实前面章节中的自绘控件,就是一种特殊控件二次开发的方法,但有很多控件没有自绘属性。不支持自绘的控件进行二次开发,主要是编写代码改造控件的绘图和操作的消息映射函数,如OnPaint和OnMouseMove等。3)在类视图中添加一些窗口显示与鼠标操作相关的消息映射函数,如图11-19所示。显然基于标准控件的二次开发,比从空白窗口开始重新开发控件的过程简单很多。......
2023-11-25
使用MFC应用程序向导,创建一个工程名为“tb”的基于对话框程序,用于演示通过创建自定义子窗口来开发一个标签控件的过程。1)在类视图中添加CWnd派生类,由空白窗口开发出一个标签控件,如图11-16所示。5)在源文件中,继续编写插入标签项的函数。11)修改主对话框的初始化函数,调用CTestTab::Create函数创建自定义标签控件。本示例演示了将空白窗口加工成为标签控件的过程,微软的开发人员也是这样开发标签控件的。......
2023-11-25
自绘列表控件,不但可以按行作不同的绘制,还可以按列作不同的绘制。打开本章第6节的“Si”工程,本节将继续开发支持自绘的列表控件类,实现带彩色背景的列表控件。1)在类视图中新建一个列表控件的派生类,如图10-40所示。7)在主对话框类的头文件中,直接手动改写列表控件的关联变量为CColorList类型,如图10-41所示。通过对列表控件自绘,进一步加强了列表控件的美化效果,各行列表项显示不同的彩色背景。......
2023-11-25
标签控件,又称选项卡控件。很多软件的用户资料注册部分是采用注册向导模式,而用户资料修改则采用标签控件管理模式。打开本章第3节建立的“usd”工程,本节继续演示采用标签控件来管理多个分页。1)新插入一个对话框资源,作为使用标签控件进行分页管理的父窗口,如图9-20所示。6)添加标签控件的TCN_SELCHANGE消息反射函数OnSelchangeTab,如图9-22所示。图9-24 查看运行结果单击“修改”按钮或者双击列表选项,就会打开带标签控件的修改资料的对话框。......
2023-11-25
将一个窗口句柄嫁接到一个CWnd类型变量中。使用MFC应用程序向导,创建一个工程名为“vs”的对话框程序,演示通过函数建立关联变量。4)修改对话框初始化函数,通过调用函数建立控件窗口和变量的关联。6)为增、删、改3个按钮建立消息映射函数并修改代码。实际上类向导建立的关联变量,内部也是调用子类化函数实现的,但是使用向导建立关联变量更加方便一些。因此,在后续章节中,主要使用类向导建立关联变量。......
2023-11-25
MFC内部也封装了一些“装饰好的”控件派生类,包括位图按钮、扩展组合控件、复选列表框和拖动列表框等。CBitmapButton类用于创建和操作不包括文字的纯位图按钮控件,每个位图按钮可以包含1~4种状态的位图。图10-48 CBitmap Button类表10-3 CBitmapButton类的常用成员2)CComboBoxEx类,如图10-49所示。图10-49 CComboBoxEx类CComboBoxEx类用于创建和操作扩展组合控件,每个列表项支持文字、图像和选中图像等,常用于在软件中开发类似头像列表的功能。CComboBoxEx类的常用成员见表10-4。......
2023-11-25
自定义窗口不但可以用于作为主窗口开发框架软件或者全屏软件,也常用于作为子窗口开发自定义控件。创建一个工程名为“bt”的对话框程序,演示通过创建自定义子窗口来开发一个按钮的过程。图11-13 创建通用窗口派生类2)在建立好的自定义按钮类头文件中,添加一些成员变量和函数。5)在类视图中添加一些窗口显示和与鼠标操作相关的消息映射函数,如图11-14所示。9)在源文件中,简单编写两个按钮的消息反射函数。......
2023-11-25
IE工具栏不但按钮可以包含图标和文字,而且还有一些按钮包含下拉菜单,例如,“后退” 和“前进”按钮。打开第12章建立的“sp”分隔栏工程,用于演示IE工具栏的开发方法。1)修改IDR_MAINFRAME工具栏,删除原有工具按钮并新增一些按钮,如图14-23所示。图14-25 查看运行结果工具栏按钮图标的颜色丢失严重很难看,因此,要先加载位图到CBitmap对象中后,再将位图设置到工具栏中。15)编译并运行,测试代码,这就是IE工具栏,如图14-31所示。......
2023-11-25
相关推荐