Развиваем наш проект. Нам нужно поместить на элемент управления переключатель.
Давайте поменяем у ней имя на Param.
В классе диалогового окна нужен класс для переключателя.
class CTestDlg : public CDialog // класс диалогового окна
{
..........
CTreeCtrl m_Tree; // класс дерева
CButton m_Check; // наш переключатель
protected:
.......
};
Обмен данными с элементом управления.
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
..........
DDX_Control(pDX, IDC_TREE1, m_Tree); // с деревом
DDX_Control(pDX, IDC_CHECK1, m_Check); // c переключателем
}
Меняем реакцию на кнопку Send.
void CTestDlg::OnSend()
{
if (m_Check.GetCheck()) AfxMessageBox("Ok"); // Если установлен показать OK
else AfxMessageBox("None"); // Иначе сказать None
m_Check.SetCheck(!m_Check.GetCheck()); // Поменять установки
}
Вот так будет все работать.
Итак, создали кнопку переключатель. И для кнопки класс CButton, странно вроде. Но всё правильно, кнопка она как женщина, то такая, а через пять минут другая. Вот и может она принимать разные образы. В данном случае переключатель. Как обычно обмен данными через DDX. Так как мы создали еще одну конку для тестирования, функцию реакции и описание на основе идентификатора кнопки.
Смотрим OnSend. Самой первой строкой мы проверяем, в каком состоянии находится кнопка с помощью функции GetCheck(). Эта функция имеет тип int.
int GetCheck( ) const;
Возврат у неё такой
0 не установленно
1 установленно
2 неопределенное - это состояние есть только при
установке стилей BS_3STATE или BS_AUTO3STATE
Далее используя функцию SetCheck я меняю состояние на противоположное. Это сделано для демонстрации возможности изменения кнопки не только пользователем, но и программистом.
Настало время попробовать. Запускайте. Примените кнопку Send - вы получите состояние и произойдет изменение статуса.
Объявить класс.
class CTestDlg : public CDialog // класс диалогового окна
{
..........
CButton m_Check; // наш переключатель
protected:
.......
};
Настроить DDX.
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
..........
DDX_Control(pDX, IDC_CHECK1, m_Check); // c переключателем
}
Анализируй выбор или меняй программно.
m_Check.GetCheck()
m_Check.SetCheck(...)