在对话框中添加了几个combox控件,
想实现的功能是当选择其中一个控件的选项时,
其余的控件的选项内容要跟着改变。
例如 有两个控件,一个是极性,可选项为:单极、双极
另一个控件是数目,可选项为1-16。
当选择单极时,数目的可选项要为1-7
当选择双极时,数目的可选项应为8-16
请教各位高手该如何这样实现呢? 非常感谢!!!
想实现的功能是当选择其中一个控件的选项时,
其余的控件的选项内容要跟着改变。
例如 有两个控件,一个是极性,可选项为:单极、双极
另一个控件是数目,可选项为1-16。
当选择单极时,数目的可选项要为1-7
当选择双极时,数目的可选项应为8-16
请教各位高手该如何这样实现呢? 非常感谢!!!
也可以对每一种情况分别构造一个控件,不用的时候先隐藏,用的时候再显示。
在classwizard中添加了ComboBox控件的CBN_SELCHANGE响应,
在对应的函数中
添加代码如下:
CString str;
GetDlgItem(IDC_DMM_MODE)->GetWindowText(str);
if(str == "单极")
{
m_channel.Clear();
m_channel.AddString("通道0");
m_channel.AddString("通道1");
m_channel.AddString("通道2");
m_channel.AddString("通道3");
m_channel.AddString("通道4");
m_channel.AddString("通道5");
m_channel.AddString("通道6");
m_channel.AddString("通道7");
}
if(str == "双极")
{
m_channel.AddString("通道8");
m_channel.AddString("通道9");
m_channel.AddString("通道10");
m_channel.AddString("通道11");
m_channel.AddString("通道12");
m_channel.AddString("通道13");
m_channel.AddString("通道14");
m_channel.AddString("通道15");
}可是发现,消息响应后,是在原来的基础上增加了通道
而并没有将原来从0-15的通道选项删除,
该怎么办呢?? 困惑中....
删除
为了测试将所有的选项都删除了,
可是发现怎么选中后,删除的是偶数的通道,
而且没变换一次,通道数目就会少一半,
多选择几次极性的控件选择,通道数才会完全都删除掉
这是怎么回事呢???
m_mode.AddString("单极");//模式的两个选项
m_mode.AddString("差分");
m_mode.SetCurSel(0); m_channel.AddString("通道0");//通道的16个选项
m_channel.AddString("通道1");
m_channel.AddString("通道2");
m_channel.AddString("通道3");
m_channel.AddString("通道4");
m_channel.AddString("通道5");
m_channel.AddString("通道6");
m_channel.AddString("通道7");
m_channel.AddString("通道8");
m_channel.AddString("通道9");
m_channel.AddString("通道10");
m_channel.AddString("通道11");
m_channel.AddString("通道12");
m_channel.AddString("通道13");
m_channel.AddString("通道14");
m_channel.AddString("通道15");在CWinCltDlg::OnSelchangeDmmMode() 中
CString str;
GetDlgItem(IDC_DMM_MODE)->GetWindowText(str);
if(str == "单极")
{
m_channel.DeleteString(0);
m_channel.DeleteString(1);
m_channel.DeleteString(2);
m_channel.DeleteString(3);
m_channel.DeleteString(4);
m_channel.DeleteString(5);
m_channel.DeleteString(6);
m_channel.DeleteString(7);
m_channel.DeleteString(8);
m_channel.DeleteString(9);
m_channel.DeleteString(10);
m_channel.DeleteString(11);
m_channel.DeleteString(12);
m_channel.DeleteString(13);
m_channel.DeleteString(14);
m_channel.DeleteString(15); m_channel.AddString("通道0");
m_channel.AddString("通道1");
m_channel.AddString("通道2");
m_channel.AddString("通道3");
m_channel.AddString("通道4");
m_channel.AddString("通道5");
m_channel.AddString("通道6");
m_channel.AddString("通道7");
}
if(str == "差分")
{
m_channel.DeleteString(0);
m_channel.DeleteString(1);
m_channel.DeleteString(2);
m_channel.DeleteString(3);
m_channel.DeleteString(4);
m_channel.DeleteString(5);
m_channel.DeleteString(6);
m_channel.DeleteString(7);
m_channel.DeleteString(8);
m_channel.DeleteString(9);
m_channel.DeleteString(10);
m_channel.DeleteString(11);
m_channel.DeleteString(12);
m_channel.DeleteString(13);
m_channel.DeleteString(14);
m_channel.DeleteString(15); m_channel.AddString("通道8");
m_channel.AddString("通道9");
m_channel.AddString("通道10");
m_channel.AddString("通道11");
m_channel.AddString("通道12");
m_channel.AddString("通道13");
m_channel.AddString("通道14");
m_channel.AddString("通道15");
}
通过DeleteString()不是把原有的都删除了么?
可是编译运行后却发现只是删除了一部分,新增加的到是都添加进去了
DeleteAllStrings();删除所有
干干净净
DeleteString()
删除INDEX后,INDEX重新排列
例如
m_channel.DeleteString(0);
m_channel.DeleteString(1);
就是删除0项后,排列后
这时候删除的1就是原来的第三项::(当前第二项)
{
case:
CComboBox::AddString();
break;
default:
break;
}}
.Clear();
-----------------------
- -!!!误导了我
用while(次数)DeleteString(0)
用CComboBox::ResetContent();
也可用m_channel.DeleteString(0)
散分!