Проверка строки в списке со списком - PullRequest
1 голос
/ 15 октября 2019

Мне нужно запрограммировать свой комбинированный список таким образом, чтобы при нажатии флажка 1 в список комбинированного списка добавлялось «1», а если флажок не установлен, «1» удалялся из списка. Аналогично для других флажков (например, checkbox2, checkbox3 и т. Д.).

Я могу добавить «1» в список, но не уверен, какой код следует использовать для проверки и удаления. Вот как я его кодировал:

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
}

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Используйте метод CComboBox::FindString() или CComboBox::FindStringExact(), чтобы найти индекс строки, затем используйте метод CComboBox::DeleteString(), чтобы удалить его.

Например:

void MyProject::OnBnClickedCheckBox1()
{
    CButton *pCheckboxCam1 = (CButton*) GetDlgItem(IDC_Cam1Check);

    CComboBox *pComboboxCam1 = (CComboBox *) GetDlgItem(IDC_Cam1Combo);
    int index = pComboboxCam1->FindString(-1, _T("1"));

    if (pCheckboxCam1->GetCheck() == BST_CHECKED)
    {
        if (index < 0)
            pComboboxCam1->AddString(_T("1"));
    }
    else
    {
        if (index >= 0)
            pComboboxCam1->DeleteString(index);
    }
}
0 голосов
/ 15 октября 2019

Вы должны использовать либо функцию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...