Поделиться через


Создание страниц свойств для компонента

Объект уведомления создает пользовательские страницы свойств после того, как подсистема конфигурации сети вызывает метод INetCfgComponentPropertyUi::MergeProppages объекта notify. Настраиваемые страницы свойств можно объединить с набором страниц по умолчанию на странице свойств компонента с помощью метода MergePropPages . MergePropPages возвращает соответствующее количество страниц по умолчанию, с которыми можно объединить пользовательские страницы.

Для создания пользовательских страниц свойств MergePropPages вызывает функцию COM CoTaskMemAlloc для выделения памяти для дескрипторов структур PROPSHEETPAGE. Каждый из этих дескрипторов представляет страницу свойств для создания. Если CoTaskMemAlloc успешно выделяет память для дескрипторов, MergePropPages объявит и заполнит структуры PROPSHEETPAGE для каждой страницы свойств. После заполнения этих структур mergePropPages вызывает функцию Win32 CreatePropertySheetPage для каждой страницы свойств. В этом вызове MergePropPages передает адрес создаваемой структуры PROPSHEETPAGE.

Функция обратного вызова диалогового окна также должна быть реализована для каждой страницы свойств, создаваемой MergePropPages . Функция обратного вызова диалогового окна обрабатывает сообщения, отправляемые операционной системой на страницу свойств, связанную с этой функцией диалогового окна. Чтобы связать страницу свойств с функцией диалогового окна, MergePropPages должна указывать элемент pfnDlgProc каждой структуры PROPSHEETPAGE для каждой страницы на функцию dialog-box для страницы.

Функция диалогового окна обрабатывает следующие сообщения:

  • Сообщение WM_INITDIALOG, которое отправляется в функцию диалогового окна непосредственно перед отображением связанной страницы свойств операционной системы. Функции диалогового окна обычно используют это сообщение для инициализации страницы свойств и выполнения задач, влияющих на внешний вид страницы свойств.

  • Сообщение WM_NOTIFY, которое отправляется функции диалогового окна после события на странице свойств. Другие сведения, отправляемые с этим сообщением, определяют, какое событие произошло. Эти сведения о событии содержатся в указателе на структуру NMHDR. Сведения, которые NMHDR может содержать для страницы свойств, например:

    • Событие PSN_APPLY, которое указывает, что пользователь нажимает кнопку ОК, Закрыть или Применить на странице свойств. Если пользователь нажимает кнопку ОК, Закрыть или Применить, функция диалогового окна может вызвать макрос PropSheet_Changed , чтобы сообщить листу свойств об изменении сведений на странице. В этом вызове функция диалогового окна передает дескрипторы на страницу свойств и страницу. Функция dialog-box может вызывать функцию Win32 GetParent и передавать дескриптор на страницу, чтобы получить дескриптор на лист свойств.

      После того как функция dialog-box уведомляет страницу свойств об изменении, подсистема конфигурации сети вызывает метод INetCfgComponentPropertyUi::ValidateProperties, чтобы проверка допустимость всех изменений. Если все изменения действительны, подсистема вызывает метод INetCfgComponentPropertyUi::ApplyProperties объекта уведомления, чтобы все изменения вступили в силу. Подсистема конфигурации сети вызывает Метод ApplyProperties , прежде чем операционная система закроет диалоговое окно.

      Метод ApplyProperties можно реализовать для получения сведений, вводимой пользователем, и для установки сведений в элементы данных объекта уведомления.

    • Событие PSN_RESET, указывающее, что операционная система вот-вот уничтожит страницу свойств. Пользователь может нажать кнопку Отмена на странице свойств, чтобы инициировать это действие. Если пользователь нажимает кнопку Отмена, подсистема конфигурации сети вызывает метод INetCfgComponentPropertyUi::CancelProperties , чтобы все изменения были проигнорированы. Подсистема конфигурации сети вызывает CancelProperties перед закрытием диалогового окна.

    • Событие PSN_KILLACTIVE, указывающее, что страница свойств вот-вот станет неактивной. Это событие возникает, когда пользователь активирует другую страницу или нажимает кнопку ОК.

Функции обратного вызова страницы свойств также можно реализовать для каждой страницы свойств, создаваемой MergePropPages. Функция обратного вызова страницы свойств выполняет операции инициализации и очистки страницы. Чтобы связать страницу свойства с функцией обратного вызова страницы свойств, MergePropPages должна указывать элемент pfnCallback каждой структуры PROPSHEETPAGE для каждой страницы на функцию обратного вызова страницы свойств для этой страницы.

Дополнительные сведения см. в документации по Microsoft Windows SDK:

  • создание страниц свойств и структур, функций и уведомлений для страниц свойств

  • процедуры обратного вызова диалогового окна, сообщения и структуры