Зацикливайтесь на Check или EditBox

0

Я использую Visual Studio 2010 и имею 10 флажков в моей форме и создал переменные для каждого из них, назвав m_CheckBox1, m_CheckBox2, m_CheckBox3.... m_CheckBox10, а также для полей редактирования (m_EditBox1... и так далее).

Я хочу проверить, отмечены ли флажки в цикле, и если значение поля редактирования не является желательным, отобразится ошибка в поле сообщения. Если это значение в порядке, перейдите к следующему флажку и в поле редактирования. Как я могу перейти к следующему флажку, просто как

    for (i=1;i < 11 ;i++)
         {
           is_checked = m_Checkboxi.GetCheck();
            if is_checked==1
              {do sth. with m_EditBox(i)}
            else
             do sth.
        }

благодаря

  • 0
    Не храните переменную для каждого флажка. Вместо этого, поскольку флажки логически формируют массив вариантов, сохраняйте их также в массиве. Сейчас самое время отказаться от использования мастеров и понять сгенерированный код.
Теги:
visual-c++
mfc
checkbox
visual-studio-2010

1 ответ

1
Лучший ответ

Избавьтесь от этих 10 переменных и поместите в массив:

CButton m_CheckBox [10];

Также отредактируйте файл resource.h, если необходимо, чтобы сделать 10 идентификаторов последовательными. Вам нужно будет заменить вызовы DDX_Control в DoDataExchange, чтобы использовать массив в цикле:

CDialog::DoDataExchange(pDX);
for (int i = 0; i < 10; i++)
    DDX_Control(pDX, IDC_CHECK1 + i, m_CheckBox[i]);
  • 0
    Или, если вы не можете изменить идентификаторы ресурса, объявите статический массив целых, содержащих идентификаторы ресурса по порядку.
  • 0
    ScottMcP-MVP: если идентификатор ресурса не является непрерывным, то как он будет работать :(
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню