vc中CComboBox索引问题

【问题描述】在vc中设置了组合框的内容(比如组合框中有COM1和LAN1),之后用GetCurSel()函数获取选中项(比如选择了COM1,则得到索引0),并用switc... 【问题描述】
在vc中设置了组合框的内容(比如组合框中有COM1和LAN1),之后用GetCurSel()函数获取选中项(比如选择了COM1,则得到索引0),并用switch来根据选中项做相应的处理(比如选择了COM1后进入case 0:并对COM1进行操作)。
但如果组合框的内容发生了变化(比如增加了ABC),则这时用GetCurSel()函数获取COM1项的索引值则为1了,case就进入了错误的分支。
请问能否让组合框中的内容与索引值绑定,而进入正确的分支呢?
展开
 我来答
灰人王
2012-02-03 · TA获得超过2456个赞
知道大有可为答主
回答量:2401
采纳率:0%
帮助的人:935万
展开全部
索引值是控件本身的属性,没法和内容绑定。不知道你的组合框是在什么情况下发生变化的?我觉得应该在这个环节做些控制,使后面添加的内容都放到最后去。这样前面的索引仍然是正确的。实在不行,那就判断字符串好了。
追问
我在初始化对话框的时候用的是addstring函数,但是添加后好像控件进行了自动排序,所以,之后添加字符串后又重新进行了排序,所以获取索引就错了
追答
你用InsertString,不要用addString,这样就可以指定索引值了。另外,控件有个Sort属性,你把它设成False,这样,即使用addString顺序也不会重排。
百度网友d4e476e
2012-02-03 · TA获得超过101个赞
知道小有建树答主
回答量:94
采纳率:0%
帮助的人:49.6万
展开全部
可以使用一个map<string, int>建立关联,
map<string, int> mapCOM;
mapCOM["COM1"] = 0;
mapCOM["COM2"] = 2;
CString strSel;
cmbox.GetWindowText(strSel);
string strKey = (LPCTSTR)strSel;
switch(mapCOM[strKey])
{

}
这样你只要取到当前选择的字符串内容就能得到正确的索引,
而不用关心在CComboBox中的位置。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式