通过一个造航母的小Demo,练习在下拉列表控件中添加、删除选项

一、CComboBox类几个关键的方法

1、插入选项

//AddString:返回int值是列表项的下标,可根据行为中的Sort字段决定是插在末尾,还是进行排序
m_combo.AddString(_T("孙悟空"));
m_combo.AddString(_T("猪八戒"));
m_combo.AddString(_T("沙僧"));
//InsertString:可指定插入位置,返回int值是插入项下标
m_combo.InsertString(0,_T("孙悟空"));
m_combo.InsertString(1,_T("猪八戒"));
m_combo.InsertString(2,_T("沙僧"));
//在OnInitDialog中使用可设置下拉列表的默认值
m_combo.SetCurSel(0);

2、删除选项

//DeleteString:返回int值是剩下字符串的个数,参数为待删除项的下标
m_combo.DeleteString(i);

3、获取列表项总个数

int count = 0;
count = m_combo.GetCount();

4、获取当前选择的项

//获取当前选项的下标
int i = 0;
i = m_combo.GetCurSel();

//进一步获取当前选项的字符串
CString str;
m_combo.GetLBText(i, str);

二、实验程序的关键代码

1、新增列表项

void CtestDlgDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	CString str;
	CString str2;
	int count = m_combo.GetCount();

	m_edit.GetWindowTextW(str);

	if(str != _T(""))
	{
		m_combo.InsertString(count, str);
		str2 = _T("新造航母:") + str;
		AfxMessageBox(str2);
	}
	else
	{
		AfxMessageBox(_T("请为航母命名!"));
	}
}

2、删除列表项

void CtestDlgDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	CString str;
	CString str2;

	int i = m_combo.GetCurSel();
	
	m_combo.GetLBText(i, str);
	m_combo.DeleteString(i);

	str2 = _T("退役航母:") + str;
	AfxMessageBox(str2);
}

三、效果展示

1、初始状态 1.jpg

2、新增航母 2.jpg

3.jpg

3、淘汰落后航母 5.jpg

补充:

1、如何修改AfxMessageBox弹窗的标题? 在资源视图 -> String Table中新建字符串,并修改ID为AFX_IDS_APP_TITLE,并在标题中修改想要显示的内容。