http://tikitak.narod.ru ---- Главная страница сайта
Шаг 54 - Кнопки переключатели и CButton
Создание проекта
Работаем со старым проектом. Поместите еще одну кнопку для экспериментов и управляющий элемент кнопка переключатель, как на рисуке ниже.
Создание кода
В классе диалогового окна
class CTestDlg : public CDialog
{
......
protected:
......
CButton m_Check;
void OnTest();
........
};
Обмен данными с элементом управления
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CHECK1, m_Check);
}
Обработка сообщений новой кнопки
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
.........
ON_BN_CLICKED(IDC_TEST,OnTest)
.........
END_MESSAGE_MAP()
Функции реакции
void CTestDlg::OnSend()
{
if (m_Check.GetCheck()) AfxMessageBox("Ok");
else AfxMessageBox("None");
m_Check.SetCheck(!m_Check.GetCheck());
}
void CTestDlg::OnTest()
{
m_Check.EnableWindow(FALSE);
}
Описание
Итак создали кнопку переключатель. И для кнопки класс CButton, странно вроде. Но всё правильно, кнопка она как женщина, то такая, а через пять минут другая. Вот и может она принимать разные образы. В данном случае переключатель.
Как обычно обмен данными через DDX. Так как мы создали еще одну конку для тестирования, функцию реакции и описание на основе идентификатора кнопки.
Смотрим OnSend. Самой первой строкой мы проверяем в каком состоянии находится кнопка с помощью функции GetCheck(). Эта функция имеет тип int.
int GetCheck( ) const;
А возврат у неё такой
0 не установленно
1 установленно
2 неопределенное - это состояние есть только при
установке стилей BS_3STATE или BS_AUTO3STATE
Далее используя функцию SetCheck я меняю состояние на противоположное. Это сделано для демонстрации возможности изменения кнопки не только пользователем, но и программистом.
В функции OnTest я запрещаю изменять состояние пользователем на основе функции EnableWindow эту функцию вы не найдете в описании CButton, она получена от папы.
Настало время попробовать. Запускайте. Примените кнопку Send - вы получите состояние и произойдет изменение статуса. А теперь попробуйте Test. Мышкой у Вас изменения запрещены. А вот кнопкой Send нет !!!!
Что можно зевсу
То нельзя быку :-)
Предыдущий Шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|