C++ 检查组合框列表中的字符串
我需要对组合框进行编程,以便在单击复选框1时,“1”将添加到组合框列表中,如果未选中复选框1,则“1”将从列表中删除。与其他复选框类似(如复选框2、复选框3等) 我可以将“1”添加到列表中,但不确定应该使用什么代码来检查和删除。我是这样编码的:C++ 检查组合框列表中的字符串,c++,visual-studio-2010,combobox,C++,Visual Studio 2010,Combobox,我需要对组合框进行编程,以便在单击复选框1时,“1”将添加到组合框列表中,如果未选中复选框1,则“1”将从列表中删除。与其他复选框类似(如复选框2、复选框3等) 我可以将“1”添加到列表中,但不确定应该使用什么代码来检查和删除。我是这样编码的: void MyProject::OnBnClickedCheckBox1() { if( //ComboBox list does not have "1") { CComboBox *pComboboxCam1 = (C
void MyProject::OnBnClickedCheckBox1()
{
if( //ComboBox list does not have "1")
{
CComboBox *pComboboxCam1 = (CComboBox *)(GetDlgItem(IDC_Cam1Combo));
pComboboxCam1 = (CComboBox *)(GetDlgItem(IDC_Cam1Combo));
pComboboxCam1->AddString(_T("1"));
}
else
//Remove "1" from list
}
使用or方法查找字符串的索引,然后使用该方法将其删除
例如:
void MyProject::OnBnClickedCheckBox1()
{
CButton*pCheckboxCam1=(CButton*)GetDlgItem(IDC_Cam1Check);
cmbobox*pcomboxcam1=(cmbobox*)GetDlgItem(IDC_Cam1Combo);
int index=pcomboxcam1->FindString(-1,_T(“1”);
如果(pCheckboxCam1->GetCheck()==BST\u选中)
{
如果(指数<0)
pcomboxcam1->AddString(_T(“1”);
}
其他的
{
如果(索引>=0)
pcomboxcam1->删除字符串(索引);
}
}
您应该使用FindString函数或FindStringExact函数。它们在组合框中搜索字符串,如果值大于或等于0,则返回索引,如果搜索失败,则返回CB_ERR
CComboBox *pComboboxCam1 = (CComboBox *)(GetDlgItem(IDC_Cam1Combo));
if( pComboboxCam1->FindStringExact(0,_T("1")) == CB_ERR) // first parameter is the indextStart, second one is the string
{
//String not found
pComboboxCam1 = (CComboBox *)(GetDlgItem(IDC_Cam1Combo));
pComboboxCam1->AddString(_T("1"));
}
else
//String found
太神了谢谢。请允许我问一下“FindString(-1,_T(“1”))中的“-1”有什么作用?@m170115根据我在回答中链接的文档:“
nStartAfter
包含要搜索的第一个项目之前的项目的从零开始的索引。当搜索到达列表框底部时,它将继续从列表框顶部返回到nStartAfter
指定的项目。如果为-1,则从开始搜索整个列表框。“