www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 54 - Кнопки переключатели и CButton

Создание проекта

Работаем со старым проектом. Поместите еще одну кнопку для экспериментов и управляющий элемент кнопка переключатель, как на рисуке ниже.

step54.gif (2539 b)

Создание кода

В классе диалогового окна
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
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz