Visual C++. Описание стандартных классов
Страница 19.


 
CPropertyPage
Объект класса CPropertyPage представляет собой отдельную страницу окна свойств, иначе называемую вкладкой диалогового окна. Как и для стандартного диалогового окна для каждой его вкладки необходимо создать отдельный класс, производный от класса CPropertyPage. Чтобы использовать объекты данного класса необходимо сначала создать объект класса CPropertySheet, а затем включить в него объекты классов всех составляющих его вкладок. Чтобы добавить в диалоговое окно новую вкладку необходимо вызвать для объекта ее класса функцию CPropertySheet::AddPage, а затем вывести это диалоговое окно на экран, вызвав функцию CPropertySheet::DoModal для модального диалогового окна или CPropertySheet::Create для немодального диалогового окна.
Данное диалоговое окно может быть оформлено в стиле мастера, в котором диалоговое окно представляет собой последовательность вкладок, перемещение по которым происходит в определенной последовательности и управляется специальными кнопками в диалоговом окне. Такой тип окна часто применяется для установки программ и оборудования.
Описание данного класса содержится в файле заголовка afxdlgs.h.
OnSetActive
virtual BOOL OnSetActive();
Возвращаемое значение
Ненулевое, если вкладка успешно активизировалась, и нулевое в противном случае.
Описание
Данная функция вызывается приложением при выборе данной вкладки пользователем. Перегрузка данной функции позволяет произвести инициализацию содержащихся в ней объектов классов элементов управления. Первым оператором перегруженной функции должен быть вызов соответствующего метода базового класса. По умолчанию данная функция создает окно для данной вкладки, если оно уже не было создано ранее, и делает эту вкладку активной.
OnWizardBack
virtual LRESULT OnWizardBack();
Возвращаемое значение
Нулевое, для успешного перехода к предыдущей странице, и -1 для предотвращения перехода. Чтобы перейти к произвольной станице, возвратите идентификатор диалогового окна, которое необходимо вывести на экран.
Описание
Данная функция вызывается приложением при нажатии пользователя на кнопку <Назад в окне мастера. Перегрузка данной функции позволяет определить некоторые действия, которые необходимо предпринять при возврате к предыдущей странице.
OnWizardFinish
virtual BOOL OnWizardFinish();
Возвращаемое значение
Ненулевое, если окно мастера было уничтожено при завершении его работы, и нулевое в противном случае.
Описание
Данная функция вызывается приложением при нажатии пользователя на кнопку Готово в окне мастера. Перегрузка данной функции позволяет определить некоторые действия, которые необходимо предпринять при нажатии кнопки Готово. Если данная функция возвращает значение TRUE, то диалоговое окно со вкладками уничтожается и мастер прекращает свою работу. В противном случае диалоговое окно со вкладками не уничтожается.
OnWizardNext
virtual LRESULT OnWizardNext();
Возвращаемое значение
Нулевое, для успешного перехода к следующей странице, и -1 для предотвращения перехода. Чтобы перейти к произвольной станице, возвратите идентификатор диалогового окна, которое необходимо вывести на экран.
Описание
Данная функция вызывается приложением при нажатии пользователя на кнопку Далее> в окне мастера. Перегрузка данной функции позволяет определить некоторые действия, которые необходимо предпринять при переходе к следующей странице.
CPropertySheet
Объекты класса CPropertySheet представляют собой диалоговые окна со вкладками. Данный объект обычно включает в себя один или несколько объектов класса CPropertyPage. Данное диалоговое окно состоит из ярлыков вкладок, отображаемых в данном диалоговом окне и области, занимаемой текущей отображаемой вкладкой.
Хотя класс CPropertySheet и не является производным от класса CDialog, многие функции данного класса, совпадают с функциями класса CDialog. Например, объект данного класса также создается в два этапа: сначала вызывается конструктор класса, а затем функция DoModal для создания модального диалогового окна со вкладками, или Create для создания немодального диалогового окна. Класс CPropertySheet имеет два типа конструкторов: CPropertySheet::Construct и CPropertySheet::CPropertySheet.
Обмен данными между объектом класса CPropertySheet и некоторым внешним объектом осуществляется аналогично обмену данными с объектом класса CDialog. Основным отличием является то, что для инициализации объектов элементов управления вкладки используются переменные-члены класса CPropertyPage, а не переменные класса CPropertySheet.
Класс CPropertySheet позволяет создать диалоговое окно, оформленное в стиле мастера, представляющее собой последовательность вкладок, перемещение по которым происходит в определенной последовательности и управляется специальными кнопками в диалоговом окне. В диалоговом окне мастера вкладки не имеют ярлыков и на экране отображается только одна вкладка. Вместо кнопок OK и Применить, в диалоговом окне мастера используются кнопки <Назад, Далее> или Готово. Кроме этого в нем используются кнопки Отмена и Справка.
Чтобы создать диалоговое окно мастера, необходимо сначала создать простое диалоговое окно со вкладками, а затем, перед вызовом функции DoModal, вызвать функцию SetWizardButtons. Для того, чтобы после завершения работы пользователя с окном в нем появилась кнопка Готово, вызовите функцию SetFinishText.
Описание данного класса содержится в файле заголовка afxdlgs.h.
AddPage
void AddPage(CPropertyPage *pPage);
Аргументы
"sectiontableheader"pPage - указатель на объект класса CPropertyPage, добавляемый в данное диалоговое окно. Не может принимать нулевое значение.
Описание
Данная функция добавляет вкладку в диалоговое окно и помещает ее ярлык в крайнюю правую позицию в окне. Поэтому, вкладки располагаются в диалоговом окне слева направо в порядке их включения в объект класса диалогового окна. Функция AddPage добавляет вкладку в окно, но не отображает ее на экране. Отображение происходит только после выбора соответствующего ярлыка вкладки. Диалоговое окно является родительским окном для вкладки, поэтому, для доступа к нему из объекта вкладки может быть использована функция CWnd::GetParent. Вызов функции AddPage может быть осуществлен до вызова функций DoModal или Create. При вызове данной функции в открытом диалоговом окне в ряду ярлыков немедленно произойдут соответствующие изменения.
CPropertySheet::CPropertySheet
CPropertySheet();
CPropertySheet(UINT nIDCaption, CWnd *pParentWnd = NULL, UINT iSelectPage = 0);
CPropertySheet(LPCTSTR pszCaption, CWnd *pParentWnd = NULL, UINT iSelectPage = 0);
Аргументы
"sectiontableheader"nIDCaption - идентификатор заголовка диалогового окна с вкладками.
"sectiontableheader"pParentWnd - указатель на родительское окно диалогового окна с вкладками. Если данный аргумент равен нулю, то родительским окном для данного окна будет главное окно приложения.
"sectiontableheader"iSelectPage - индекс вкладки, которая должна быть открытой при открытии окна. По умолчанию раскрывается первая вкладка. Нумерация вкладок определяется порядком включения их в диалоговое окно.
"sectiontableheader"pszCaption - указатель на строку, содержащую заголовок диалогового окна со вкладками. Данный аргумент не может быть нулевым.
Описание
Данная функция используется для создания объектов класса CPropertySheet. Для вывода диалогового окна со вкладками на экран используются функции DoModal и Create. Строка, определяемая первым аргументом данной функции, помещается в заголовок диалогового окна.
DoModal
virtual int DoModal();
Возвращаемое значение
IDOK или IDCANCEL, если работа с диалоговым окном завершилась без ошибок. В противном случае - 0 или -1. Если диалоговое окно было вызвано в режиме мастера, данная функция возвращает ID_WIZFINISH или IDCANCEL.
Описание
Данная функция вызывается для отображения диалогового окна со вкладками на экране. Возвращаемое значение определяется идентификатором элемента управления, с помощью которого было закрыто диалоговое окно. После выхода из функции объект класса окна уничтожается, но сам объект диалогового окна продолжает существовать. Обычно, информация из переменных объектов класса CPropertyPage извлекается после того, как функция DoModal возвратит значение IDOK.
При первом создании вкладки диалогового окна из соответствующего ей ресурса диалогового окна может быть вызвано исключение. Это связано с тем, что объект класса CPropertyPage вносит изменения в стиль ресурса диалогового окна до создания самой вкладки. Поскольку обычно объекты ресурсов имеют атрибут только для чтения, это вызывает исключение. Это исключение обрабатывается программой, в результате чего в системе автоматически появляется модифицированная копия данного ресурса. Таким образом вызванное исключение игнорируется.
Поскольку данное исключение должно обрабатываться операционной системой, не помещайте вызов функции CPropertySheet::DoModal в блок try/catch, обрабатывающий все исключения, например, с использованием оператора catch (...). Данный оператор возьмет на себя обработку исключения, предназначенного для операционной системы, что может привести к непредсказуемым последствиям.
 
« Предыдущая статья   Следующая статья »