MFC中动态生成CComBox,响应CComBox选中项的消息ON_CBN_SELCHANGE,并获取项的值

一:在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的默认值设置为选中项的值
}


你可能感兴趣的:(mfc,VS2010,CComBox)