VC++中关于MSCOMM控件中SetSettings属性的设置问题

void CSerialTPDlg::OnSelchangeComboNumb()
{
// TODO: Add your control notification handler code here
UpdateData(true);
int nlndex=m_comboNumb.GetCurSel ();
CString strltem;
m_comboNumb.GetLBText (nlndex,strltem);//通过下拉列表框改变的值,然后传出到strltem.
strltem.GetBuffer (5);//将CString类型转到适合SetSetting的参数类型LPCTSTR。
m_ctrlComm.SetSettings(",,atoi(strltem),");//通过调用将参数传递给串口设置。
strltem.ReleaseBuffer ();
UpdateData(false);

}
Debug到m_ctrlComm.SetSettings(",,atoi(strltem),");这里就有问题了。。
请问这里的调用是否不合法呀?应该怎么修改呢?
补充:
我想实现的是,通过改变下拉列表框的值改变SetSetting的【四个】参数。。。
小弟在此谢谢大家了!

这种方法我是没试出来,不过可以用switch语句分别对每个选项产生事件来对SetSetting赋值。
选择设置“奇偶校验”列表框来说明方法吧:
void CSerialTPDlg::OnSelchangeComboNoe()
{
// TODO: Add your control notification handler code here
UpdateData(true);
int nlndex=m_comboNoe.GetCurSel ();
switch(nlndex)
{
case 1: m_ctrlComm.SetSettings(",N,,");
break;
case 2: m_ctrlComm.SetSettings(",O,,");
break;
case 3: m_ctrlComm.SetSettings(",E,,");
break;
default:
break;
}
UpdateData(false);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-03
m_ctrlComm.SetSettings(",,atoi(strltem),");
不合法。你这样其实设置的是
",,atoi(strltem),"这个串。

建议你参数值最后统一设置,而不要分开设置。改为:

CString myset;
myset.Format("%d,%s,%d,%d",atoi(strSpeed),strFlag,atoi(strBit),atoi(strStop));
m_ctrlComm.SetSettings(myset);

strFlag是校验标志(E、N或O)
第2个回答  2012-04-24
请问楼主你是怎么解决的,我现在也面临同样的问题,想在SetSetting()中用字符串,但也总是
invalid property value不知道怎么解决,希望楼主能够指点一下,先谢过了.............追问

额,都是N年前的事了谁记得啊。另外,被选为正确答案那个号是我小号,问题是我自己解决的,答案应该也就是我小号回答的了,我不会那么无聊弄个错误答案上去的。

相似回答