Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Урок 27. Создаем диалог с вкладками (PropertyPage) / Уроки MFC / Visual C++
Visual C++. MFC Урок 27. Создаем диалог с вкладками (PropertyPage)
Этот урок (и, возможно, парочку следующих) мы посвятим использованию диалогов с вкладками. Выглядят они приблизительно так:
Для создания такого диалога в вашей программе сначала создайте проект на 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'ом файлы классов двух вкладок и создайте две соответствующе переменные: