Контрольные переключатели и селекторной кнопки принадлежат к дополнительным, вспомогательных элементов управления. Как и обычные кнопки, они принадлежат к классу CButton и имеют два основных состояния: активный (избран) и неактивный (не избран). Контрольные переключатели и селекторной кнопки всегда меняют свое состояние, но, в основном, не автоматически, а по необходимости пользователя.Класс CButton обеспечивает функции для проверки и установления состояния кнопки, среди них:
int CButton :: GetCheck (); // Возвращает состояние кнопки
void CButton :: SetCheck (int nCheck); // Устанавливает состояние кнопки
где состояние кнопки: 1 - установлено, 0 - не установлено, 2 - не определяется.
Для работы с контрольными переключателями и селекторной кнопки необходимо придерживаться такой последовательности:
1. Определить в классе диалогового окна объекты переключателей и кнопок:
сlass CSampleDialog: public CDialog
[Private: CButton * rb2, * rb1; // Объекты селекторных кнопок
CButton * ch1; // Объект контрольного переключателя
public: ];
2. В функции OnInitDialog () связать объекты кнопок с соответствующими ресурсами, созданными в редакторе ресурсов и установить их первоначальное состояние:
BOOL CSampleDialog :: OnInitDialog ()
[CDialog :: OnInitDialog ();
rb1 = (CButton *) GetDlgItem (IDC_RADIO1);
rb2 = (CButton *) GetDlgItem (IDC_RADIO2);
ch1 = (CButton *) GetDlgItem (IDC_CHECK1);
rb1-> SetCheck (1); // Установка активной первой селекторную кнопку
ch1-> SetCheck (0); // Отключение контрольного переключателя
return TRUE;]
3. Для контрольных переключателей обработать макрокоманду нажатия: ON_BN_CLICKED (IDC_CHECK1, OnCheck) и реализовать соответствующий обработчик:
void CSampleDialog :: OnCheck ()
[If (! Ch1-> GetCheck ()) [.......]
else [.......] ]
4. В необходимых функциях проверить состояние селекторных кнопок, например:
void CSampleDialog :: OnFunction1 ()
[If (rb1-> GetCheck ()) MessageBox ("Выбрана переключатель 1");
if (rb2-> GetCheck ()) MessageBox ("Выбрана переключатель 2");]