一:在CComBox的父窗口类头文件中定义一个CComBox的ID号ID_COMBOX,在之后用于绑定响应选中项时的消息ON_CBN_SELCHANGE。我将其定义为:
#define ID_COMBOX 57666
注:也可以在resourceview中的String table中定义这个ID_COMBOX。
二:在需要生成CComBox的地方(如对话框,ListControl等控件)动态生成一个CComBox下拉框。生成CComBox的代码如下:
m_comBox.Create(WS_CHILD|WS_VISIBLE|CBS_SORT|CBS_DROPDOWN|CBS_OEMCONVERT,CRect(0,0,40,40),this,ID_COMBOX);//其中CBS_DROPDOWN为指定一个下拉式组合框,下面列出组合框控件的风格,更具体的可以去看鸡琢米的教程,十分详细。
组合框控件风格:
CBS_AUTOHSCROLL:使编辑框组件具有水平滚动的风格
CBS_DISABLENOSCROLL:使列表框在不需要滚动时显示一个禁止的垂直滚动条
CBS_DROPDOWN:指定一个下拉式组合框
CBS_DROPDOWNLIST:指定一个下拉列表式组合框
CBS_HASSTRINGS:指定一个含有字符串的自绘式组合框
CBS_LOWERCASE:将编辑框和列表框中的所有文本都自动转换为小写字符
CBS_NOINTEGRALHEIGHT:组合框的尺寸由应用程序而不是Windows 指定,通常,由Windows指定尺寸会使列表项的某些部分隐藏起来
CBS_OEMCONVERT:使编辑框组件中的正文可以在ANSI 字符集和OEM字符集之间相互转换。这在编辑框中包含文件名时是很有用的
CBS_OWNERDRAWFIXED:指定自绘式组合框,即由父窗口负责绘制列表框的内容,并且列表项有相同的高度
CBS_OWNERDRAWVARIABLE:指定自绘式组合框,并且列表项有不同的高度
CBS_SIIMPLE:指定一个简易组合框
CBS_SORT:自动对列表框组件中的项进行排序
CBS_UPPERCASE:将编辑框和列表框中的所有文本都自动转换为大写字符
Create()函数中的“this”指向CComBox的父窗口。ID_COMBOX为我自己定义的CComBox的ID号
三:为CComBox添加几个测试项:
m_comBox.AddString(_T("Test1")); //添加选项
m_comBox.AddString(_T("Test2"));
m_comBox.AddString(_T("Test3"));
m_comBox.AddString(_T("Test4"));
四:添加ON_CBN_SELCHANGE消息响应函数:
ON_CBN_SELCHANGE(ID_COMBOX,&CSimMeshProDlg::OnSelComChange)
在头文件中添加:
afx_msg void OnSelComChange();
五:获取CComBox中当前选中项的值:
void CSimMeshProDlg::OnSelComChange()//选择下拉框某一列的时候得到响应
{
CString ComSelItem(_T(""));//获取当前下拉框的值
m_comBox.GetLBText(m_comBox.GetCurSel(),ComSelItem);//获取CComBox下拉框当前选中的值
m_comBox.SetWindowText(ComSelItem);//将m_comBox的默认值设置为选中项的值
}