MFC combbox级联使用

5 篇文章 0 订阅

combbox的级联使用,当选择一个combbox的时候,例外一个combbox根据第一个选择变化而变化

1. 新建一个基于对话框的MFC工程,在对话框上添加两个combbox控件

2. 对combox控件添加对象的变量,这里为m_combProv 和 m_combCity,另外还需要个结构体来放置内容std::multimap<unsigned long, std::string> m_mumapCity;(需要包含map头文件)

3 添加第一个combbox的消息响应函数ON_CBN_SELCHANGE(IDC_COMBO1, &CcombDlg::OnCbnSelchangeCombo1)

4. 下面问主要代码:

void CcombDlg::OnCbnSelchangeCombo1()
{
	RefreshComb();
}

// 初始化第一个combbox
void CcombDlg::initComb()
{
	m_mumapCity.insert(std::make_pair(1001, "成都"));
	m_mumapCity.insert(std::make_pair(1001, "绵阳"));
	m_mumapCity.insert(std::make_pair(1001, "资阳"));
	m_mumapCity.insert(std::make_pair(1002, "海淀"));
	m_mumapCity.insert(std::make_pair(1002, "朝阳"));
	m_mumapCity.insert(std::make_pair(1002, "昌平"));
	int iTemt = m_combProv.AddString("四川");
	m_combProv.SetItemData(iTemt, 1001);
	iTemt = m_combProv.AddString("北京");
	m_combProv.SetItemData(iTemt, 1002);
	m_combProv.SetCurSel(0);
	RefreshComb();
}

// 根据第一个combbox的选择跟新第二个combbox
void CcombDlg::RefreshComb()
{
	m_combCity.ResetContent();
	unsigned long uId = m_combProv.GetItemData(m_combProv.GetCurSel());
	typedef std::multimap<unsigned long, std::string>::iterator cityIt;
	std::pair<cityIt, cityIt> pos = m_mumapCity.equal_range(uId);
	while(pos.first != pos.second)
	{
		std::string str = pos.first->second;
		int iItem = m_combCity.AddString(str.c_str());
		++pos.first;
	}
	m_combCity.SetCurSel(0);

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值