VC++中下拉列表框的问题(如何实现选择列表框中的选项而改变另外一个函数的参数值)
貌似列表框内容都是string型的,如果我的函数需要一个short型的参数,是否只有强制转换呢?我按网上所说的,首先对列表框定义一个CComboBox控制类的成员变量m_...
貌似列表框内容都是string型的,如果我的函数需要一个short型的参数,是否只有强制转换呢?
我按网上所说的,首先对列表框定义一个CComboBox控制类的成员变量m_comboPort,然后给列表框关联一个函数事件,然后此列表框如果改变选择的话,就会产生此事件。我的理解是,执行事件后,当前列表框提供的内容是操作者选择的选项,然后疑问出来了,我应该怎么调用,从而改变某个函数的参数。最后提供我的理解下的调用它而改变函数参数的做法(实践证明这是错误的)
void CSerialTPDlg::OnSelchangeComboPort()
{
// TODO: Add your control notification handler code here
int nlndex =m_comboPort.GetCurSel ();
CString strltem;
m_comboPort.GetLBText (nlndex,strltem);
}
下面是列表框的初始化:
CString str[]={"选择串口","1","2","3","4","5","6","7","8"};
for (int i=0;i<9;i++)
{
m_comboPort.InsertString (i,str[i]);
}
m_comboPort.SetCurSel (0);
调用它而改变函数参数:
m_ctrlComm.SetCommPort (short ("m_comboPort.GetLBText()"));//打开串口
希望有高手能看见我的问题。。。拜托百度阿姨了。。。。 展开
我按网上所说的,首先对列表框定义一个CComboBox控制类的成员变量m_comboPort,然后给列表框关联一个函数事件,然后此列表框如果改变选择的话,就会产生此事件。我的理解是,执行事件后,当前列表框提供的内容是操作者选择的选项,然后疑问出来了,我应该怎么调用,从而改变某个函数的参数。最后提供我的理解下的调用它而改变函数参数的做法(实践证明这是错误的)
void CSerialTPDlg::OnSelchangeComboPort()
{
// TODO: Add your control notification handler code here
int nlndex =m_comboPort.GetCurSel ();
CString strltem;
m_comboPort.GetLBText (nlndex,strltem);
}
下面是列表框的初始化:
CString str[]={"选择串口","1","2","3","4","5","6","7","8"};
for (int i=0;i<9;i++)
{
m_comboPort.InsertString (i,str[i]);
}
m_comboPort.SetCurSel (0);
调用它而改变函数参数:
m_ctrlComm.SetCommPort (short ("m_comboPort.GetLBText()"));//打开串口
希望有高手能看见我的问题。。。拜托百度阿姨了。。。。 展开
2个回答
展开全部
实现的方法很多:不过就你定义来说可能此种方法最好
把你的CComboBox的设为int类型 m_iCom;
至于下拉框内的内容,你用你的初始化函数实现就可以了,也可以直接在控件属性的Data中直接写。
m_ctrlComm.SetCommPort(short(m_iCom));
这样有不会出错,楼上的回答中如果你选中“选择串口”时就会出错了。
“希望有高手能看见我的问题。。。拜托百度阿姨了。。。。”这句比较逗!
把你的CComboBox的设为int类型 m_iCom;
至于下拉框内的内容,你用你的初始化函数实现就可以了,也可以直接在控件属性的Data中直接写。
m_ctrlComm.SetCommPort(short(m_iCom));
这样有不会出错,楼上的回答中如果你选中“选择串口”时就会出错了。
“希望有高手能看见我的问题。。。拜托百度阿姨了。。。。”这句比较逗!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void CSerialTPDlg::OnSelchangeComboPort()
{
// TODO: Add your control notification handler code here
int nlndex =m_comboPort.GetCurSel ();
CString strltem;
m_comboPort.GetLBText (nlndex,strltem);
m_ctrlComm.SetCommPort(short(atoi(strltem)));//打开串口
}
{
// TODO: Add your control notification handler code here
int nlndex =m_comboPort.GetCurSel ();
CString strltem;
m_comboPort.GetLBText (nlndex,strltem);
m_ctrlComm.SetCommPort(short(atoi(strltem)));//打开串口
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询