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


Печать листа свойств

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

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

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

листа свойств принтера

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

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

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

Лист свойств печати обеспечивает поддержку указания нескольких неконтигевых диапазонов страниц для печати. Элемент 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.