Печать страницы свойств

Лист свойств Print — это стандартный пользовательский интерфейс, позволяющий пользователю указать свойства определенного задания печати. Страница свойств состоит из набора страниц свойств, которые зависят от принтера или приложения. К подмножествам стандартных страниц свойств Windows некоторые принтеры могут добавлять страницы свойств, относящиеся к драйверу, а некоторые приложения — страницы свойств для конкретных приложений.

Чтобы создать и отобразить лист свойств Print , инициализируйте структуру PRINTDLGEX и передайте ее в функцию PrintDlgEx .

На следующем рисунке показан типичный лист свойств Print .

Страница свойств принтера

Большинство элементов структуры PRINTDLGEX идентичны элементам структуры PRINTDLG . Описание использования общих элементов структуры для взаимодействия с элементами управления диалогового окна см. в разделе Печать диалогового окна. В оставшейся части этого раздела описываются функции листа свойств Печати , отличающиеся от диалогового окна Печать .

Вы можете настроить страницу свойств Печать , указав настраиваемый шаблон диалогового окна для нижней части страницы Общие и указав дополнительные страницы свойств, которые будут следовать за страницей Общие . Дополнительные сведения см. в разделе Настройка страницы свойств печати.

Объект обратного вызова можно реализовать для получения уведомлений и сообщений от функции PrintDlgEx при отображении страницы свойств. Приложения, предоставляющие настраиваемые шаблоны или дополнительные страницы, используют объект обратного вызова для взаимодействия с листом свойств. Дополнительные сведения см. в разделе Объект обратного вызова для страницы свойств печати.

Страница свойств Print обеспечивает поддержку указания нескольких несмежных диапазонов страниц для печати. Элемент lpPageRanges структуры PRINTDLGEX указывает массив структур PRINTPAGERANGE, в которых каждая структура задает диапазон страниц.

На странице свойств Печать отображается переключатель Текущая страница как часть группы переключателей Диапазон страниц . Чтобы управлять переключателем Текущая страница , используйте флаги PD_CURRENTPAGE и PD_NOCURRENTPAGE в элементе Flags структуры PRINTDLGEX .

В этом разделе рассматриваются следующие темы.

Настройка страницы свойств печати

Страницу свойств Печать можно настроить следующими способами.

  • Укажите пользовательский шаблон для нижней части страницы Общие . Это позволяет включать дополнительные элементы управления, уникальные для вашего приложения. Функция PrintDlgEx использует пользовательский шаблон вместо шаблона по умолчанию.
  • Укажите дополнительные страницы свойств для следовать за страницей Общие .
  • Укажите объект обратного вызова. Дополнительные сведения см. в разделе Объект обратного вызова для страницы свойств печати.

Изменить верхнюю часть страницы Общие нельзя. Страницы свойств, предоставленные драйвером принтера, изменить нельзя.

Чтобы предоставить пользовательский шаблон для страницы Общие, выполните следующие действия.

  1. Создайте пользовательский шаблон для нижней части страницы Общие , изменив шаблон PRINTDLGEXORD, указанный в файле Prnsetup.dlg. Как правило, размер настраиваемого шаблона должен совпадать с размером шаблона по умолчанию. Однако можно увеличить настраиваемый шаблон, если указать флаг PD_USELARGETEMPLATE , чтобы создать страницу "Общие " большего размера. Идентификаторы элементов управления, используемые в шаблоне диалогового окна печати по умолчанию, определяются в файле Dlgs.h.

  2. Используйте структуру PRINTDLGEX , чтобы включить шаблон следующим образом:

    • Если настраиваемый шаблон является ресурсом в приложении или библиотеке динамической компоновки, установите флаг PD_ENABLEPRINTTEMPLATE в элементе Flags . Используйте элементы hInstance и lpPrintTemplateName структуры, чтобы определить модуль и имя ресурса.

      -Или-

    • Если пользовательский шаблон уже находится в памяти, установите флаг PD_ENABLEPRINTTEMPLATEHANDLE . Используйте элемент hInstance для идентификации объекта памяти, содержащего шаблон.

  3. Если вы используете пользовательский шаблон для определения дополнительных элементов управления, необходимо предоставить объект обратного вызова для обработки входных данных для элементов управления. Объект обратного вызова реализует метод IPrintDialogCallback::HandleMessage , который получает сообщения, отправленные в настраиваемое диалоговое окно.

Предоставление дополнительных страниц свойств

  1. Используйте функцию для создания дополнительных страниц.

  2. Используйте элемент lphPropertyPages структуры PRINTDLGEX , чтобы указать массив дескрипторов для дополнительных страниц.

    Процедуры диалогового окна, указанные при создании каждой страницы, обрабатывают сообщения, отправляемые на страницы.

  3. Может потребоваться предоставить объект обратного вызова, реализующий интерфейс . Функция PrintDlgEx использует этот интерфейс для передачи приложению указателя на интерфейс IPrintDialogServices . Процедуры диалогового окна для дополнительных страниц свойств могут использовать этот интерфейс для получения сведений о выбранном принтере.

Объект обратного вызова для листа свойств печати

Приложение, отображающее страницу свойств Print , может реализовать объект обратного вызова для получения уведомлений и сообщений от функции PrintDlgEx при отображении страницы свойств. Чтобы предоставить объект обратного вызова, укажите указатель на объект в элементе lpCallback структуры PRINTDLGEX .

Объект обратного вызова должен реализовывать интерфейс IPrintDialogCallback . Функция PrintDlgEx вызывает методы IPrintDialogCallback в следующих ситуациях:

  • При инициализации диалогового окна
  • Когда пользователь выбирает другой принтер из списка установленных принтеров, отображаемых на странице свойств
  • При получении сообщений для дочернего диалогового окна в нижней части страницы "Общие " страницы свойств

Объект обратного вызова также должен реализовывать интерфейс IObjectWithSite . Функция PrintDlgEx вызывает метод для передачи указателя на интерфейс IPrintDialogServices в приложение. Методы IPrintDialogCallback могут использовать интерфейс IPrintDialogServices для получения сведений о выбранном принтере. Интерфейс IPrintDialogServices также полезен для приложений, которые создают дополнительные страницы, следующие за страницей Общие на странице свойств Печать . Процедуры диалоговых окон для дополнительных страниц могут вызывать методы IPrintDialogServices .