Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

Visual C++. MFC
Урок 27. Создаем диалог с вкладками (PropertyPage)

Этот урок (и, возможно, парочку следующих) мы посвятим использованию диалогов с вкладками. Выглядят они приблизительно так:

Диалог с вкладками

Для создания такого диалога в вашей программе сначала создайте проект на MFC AppWizard (EXE):

Проект MFC AppWizard (EXE)

На первом шаге мастера выберите SDI-тип интефейса (Single document), во всех последующих шагах все оставьте по умолчанию. В сгенегированной заготовке добавьте еще один элемент меню. Пусть его идентификатор для определенности будет ID_DIALOG_DIALOG, и его заголовок - Dialog. Добавьте обработчик для нашего нового меню в классе Вида (...View), используя ClassWizard (если забыли - Ctrl+W, вкладка MessageMaps, в combobox'е Class name выбираем класс вида, в левом списке ищем идентификатор диалога ID_DIALOG_DIALOG, в левом выбираем COMMAND), затем нажимаем на Add Function).

Теперь займемся непосредственно нашим диалогом. План здаесь такой: сначала мы для вкладок сделаем парочку диалоговых окон, производных от класса CPropertyPage. Для этих окон некоторые свойства нам надо будет поменять. Затем мы создадим новый класс (без конструктора диалогов), производный от CPropertySheet. В конструкторах этого класса мы вызовем его метод AddPage для добавления двух созданных ранее вкладок. После этого мы покажем наш диалог со вкладками при щелчке на меню. И, напоследок, посмотрим, как можно обменивать данные с нашем диалогом и с классом вида.

Начинаем наши шаги. Создайте диалог для первой вкладки. Уберите с него кнопки OK и Cancel - они нам не понадобятся. Добавьте на наго какой-нибудь элемент (пусть это для определенности будет CheckBox). Измените его заголовок на Options1, свойство Style на Child, Border на Thin, уберите галочку System menu:

Свойства вкладки

После этого вызовите ClassWizard, в появившемся диалоге выберите создание нового класса:

Создание нового класса

В появившемся диалоге New Class задаете имя класса (у нас это COptions1), и в качестве базового класса выберите CPropertyPage:

Параметры нового класса

Нажмите OK. Абсолютно аналогично создайте диалог для второй вкладки.

Теперь займемся основным классом. Вызовите диалог для создания нового класса. В качестве его базового класса выберите CPropertySheet, в качестве имени что-то вроде CDlg:

Параметры нового класса

Нажмите OK. В заголовочном файле класса CDlg подсоедините include'ом файлы классов двух вкладок и создайте две соответствующе переменные:

...
 
 #include "Options1.h"
 
 #include "Options2.h"
 
 class CDlg : public CPropertySheet
 
 {
 
     ...
 
 public:
 
     COptions1 m_op1;
 
     COptions2 m_op2;
 
     ...

Затем измените два конструктора класса CDlg:

CDlg::CDlg(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
 
     :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
 
 {
 
     AddPage(&m_op1);
 
     AddPage(&m_op2);
 
 }
 
 
 
 CDlg::CDlg(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
 
     :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
 
 {
 
     AddPage(&m_op1);
 
     AddPage(&m_op2);
 
 }

Изменяем обработчик для созданного ранее меню Dialog (не забудьте подключить в заголовочный файл для класса вида файл Dlg.h):

void CDlgWithTabsView::OnDialogDialog()
 
 {
 
     CDlg dlg("Диалог с вкладками");
 
     dlg.DoModal();
 
 }

Компилируем, запускаем, выбираем меню. Появится наше окно с вкладками:

Окно с вкладками

<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS