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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:42   1445   0

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


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP