静态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此次操作记录完毕。
此次笔记记录完毕。