平台:VS2010

静态Combo Box与Edit Control都是对话框编辑器里面常用的控件。

1.1 Combo Box

Combo Box 分为以下三类:

    Simple:总是把下拉列表的内容显示出来供选择。Dropdown:当下拉列表图标被点击时才显示列表类容,可以在列表中选择内容,并且可以对列表条进行编辑。Drop List:当下拉列表图标被点击时才显示列表类,在静态控制列表中显示选项。

官网上面用图这样诠释Combo Box的三个类型:

图1 Combo Box的 三种类型无操作时的显示

图2 点击dropdown时的显示

图3 点击Drop Listt时的显示

1.2 Edit Control

此时的可编辑框相对于Combo Box来说显得安分守纪,不那么千变万化。就不用对它多说什么了。

首先在在类中定义一个Combo Box类型(CComboBox)的对象m_veideoSelect, 然后的根据此对象调用成员函数int AddString(LPCTSTR lpszString)函数来添加内容到Combo Box框内。

int AddString(
   LPCTSTR lpszString 
);

LPCTSTR lpszString 指需要被添加到Combo Box内的字符串。

比如在MFC对话框架构下的OnInitDialog()函数中添加以下代码:

	//为Combo Box下拉列表添加选项
	m_veideoSelect.AddString(_T("1.3M WebCam"));
	m_veideoSelect.AddString(_T("视频端口A"));
	m_veideoSelect.AddString(_T("视频端口B"));
	m_veideoSelect.AddString(_T("视频端口C"));
	m_veideoSelect.AddString(_T("视频端口D"));

这些代码被执行后(Combo Box的 Drop List类型)可以得到这样子的界面:

图4 Drop List

当点击下拉框中的上下按钮时可出现其他的选项供选择。

这个过程通过类向导就可以完成。在这个函数中主要获取Drop List被点击的索引进一步获取被点击的字符串,然后发将给可编辑框Edit Control显示,代码如下:

	CString strOnSelctVedioStr;
	int nSelect;

	//获取列表中选中某项后的索引
	nSelect	= m_veideoSelect.GetCurSel();

	//根据索引获取相应的字符串
	m_veideoSelect.GetLBText(nSelect, strOnSelctVedioStr);

	//发送数据给可编辑框的另外一种方法
	SetDlgItemText(IDC_VEDIOWIN_EDIT1, strOnSelctVedioStr);

当点击选中Drop List中的某个选项时,对应的可编辑框中就会显示出刚刚在Drop List中点击的选项。其中关于静态框的引入就是简单地将Edit Control拖入对话框内,然后设置此控件的属性。

    nSelect = m_veideoSelect.GetCurSel();此函数检测选中了位于Drop List中的哪一选项,若有选择内容则返回被选内容的值,如选中第三个则返回2(从0开始计数)

返回CB_ERR表示没有选择任何内容。

    m_veideoSelect.GetLBText(nSelect, strOnSelctVedioStr);nSelect表示在Drop List列表中被选中项的索引值,然后将该索引值对应的字符串返回给strOnSelctVedioStr。函数原型
int GetLBText(
   int nIndex,
   LPTSTR lpszText 
) const;
void GetLBText(
   int nIndex,
   CString& rString 
) const;

此函数执行成功了后会返回获取字符串的字节长度,包含字符串的结束字符。若nIndex是一个无效的索引,则函数返回CB_ERR。

若操作正确,则执行结果如下:

图5 可编辑框和Drop list 未被操作时

图6 当在Dropv list选择一个选项时

Combo Box 控件和Edit Contrl此次操作记录完毕。

此次笔记记录完毕。