MFC中的组合框控件用CComboBox类来表示。该控件可以看作是列表控件和编辑框控件的组合。一般情况下,在列表框中选择了某项之后,该项的内容会在文本框中显示出来。
1 概述
组合框控件共分为3类,分别是Simple、Draw-down和Draw-down list。这三种类型主要有两方面的区别:一是控件中列表框显示的时机,二是控件中文本框的属性(静态文本框还是动态文本框),如表1所示。
表1 三种类型的组合框的区别
类型 | 列表框显示的时机 | 文本框的属性 |
Simple | 一直显示 | 动态文本框(可直接输入) |
Draw-down | 单击控件右侧向下箭头才显示 | 动态文本框(可直接输入) |
Draw-down list | 单击控件右侧向下箭头才显示 | 静态文本框(不能输入) |
三种类型的组合框控件如图1所示。从左到右依次为simple、dropdown和dropdown list类型。从图1可以看出,simple类型的组合框在开始的时候就会显示列表;而dropdown和dropdown list类型的组合框必须点击控件右侧的向下箭头时才会显示列表。dropdown类型的组合框中的编辑框是可以修改和输入的;而dropdown list类型的组合框中的编辑框不能修改和输入,只能通过在列表中选择。
图1 三种类型的组合框
2 类型选择
在VS2015的MFC程序中创建控件的方法主要有两种:一种是在“资源编辑器”中通过“工具箱”将控件拖入到界面中,该方法适用于“基于对话框的MFC程序”;另一种是通过控件对应的MFC类的成员函数进行创建,该方法适用于“基于文档/视图的MFC程序”。
2.1 在“资源编辑器”中选择组合框控件的类型
在VS2015的“资源编辑器”中选中组合框控件,之后在右侧的“属性”中选择“Type”栏,之后在右侧的下拉菜单中选择组合框的类型,如图2所示。
图2 选择组合框控件类型
2.2 通过CComboBox类的成员函数修改其类型
MFC中的组合框控件用CComboBox类来表示。通过该类的成员函数CComboBox::Create()函数设置其类型。该函数的格式是
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
其中,参数dwStyle表示组合框的属性,可以通过该参数指定组合框类型;rect表示组合框的位置;pParentWnd表示组合框的父窗口指针;nID表示组合框的ID。
首先在对话框类中添加CComboBox类的对象
CComboBox m_combobox_manual;
之后在对话框类的OnInitialDialog()函数中通过该变量调用CComboBox::Create()函数
m_combobox_manual.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL| CBS_DROPDOWNLIST, CRect(0, 0, 100, 100), this, 10001);
其中,WS_CHILD表示该组合框控件是对话框的子控件,WS_VISIBLE表示该控件可见,WS_VSCROLL表示该控件具有垂直的滑动条,CBS_DROPDOWNLIST表示该组合框控件的类型是dropdown list,另外两个类型对应的值是CBS_SIMPLE和CBS_DROPDOWN。如果这三个值都没有指定,则默认类型为simple。
3 大小调整
在“2.2 通过CComboBox类的成员函数修改其类型”中已经提到,可以通过CComboBox::Create()函数的第三个参数修改控件的大小。
对于在VS2015的“资源编辑器”中直接添加的组合框控件,可以手动调整其大小。选中要调整大小的对话框,鼠标拖动蓝色方框即可对编辑框的宽度进行调整,如图3所示。
图3 调整组合框宽度
如果需要调整组合框的高度,即控件列表的高度时,则需要在“资源编辑器”中点击控件右侧的向下箭头,之后向下拖动蓝色方框即可,如图4所示。
图4 调整组合框高度