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


Класс CPageSetupDialog

Инкапсулирует службы, предоставляемые стандартным диалоговым окном OLE "Параметры страницы" Windows с дополнительной поддержкой установки и изменения полей печати.

Синтаксис

class CPageSetupDialog : public CCommonDialog

Участники

Открытые конструкторы

Имя Описание
CPageSetupDialog::CPageSetupDialog Формирует объект CPageSetupDialog.

Открытые методы

Имя Описание
CPageSetupDialog::CreatePrinterDC Создает контекст устройства для печати.
CPageSetupDialog::D oModal Отображает диалоговое окно и позволяет пользователю выбирать.
CPageSetupDialog::GetDeviceName Возвращает имя устройства принтера.
CPageSetupDialog::GetDevMode Возвращает текущий DEVMODE принтера.
CPageSetupDialog::GetDriverName Возвращает драйвер, используемый принтером.
CPageSetupDialog::GetMargins Возвращает текущие параметры поля принтера.
CPageSetupDialog::GetPaperSize Возвращает размер бумаги принтера.
CPageSetupDialog::GetPortName Возвращает имя выходного порта.
CPageSetupDialog::OnDrawPage Вызывается платформой для отображения изображения экрана печатной страницы.
CPageSetupDialog::P reDrawPage Вызывается платформой перед отрисовкой изображения экрана печатной страницы.

Открытые члены данных

Имя Описание
CPageSetupDialog::m_psd Структура, используемая для настройки CPageSetupDialog объекта.

Замечания

Этот класс предназначен для создания диалогового окна установки печати.

Чтобы использовать CPageSetupDialog объект, сначала создайте объект с помощью конструктора CPageSetupDialog . После создания диалогового окна можно задать или изменить любые значения в m_psd элементе данных, чтобы инициализировать значения элементов управления диалогового окна. Структура m_psd имеет тип PAGESETUPDLG.

После инициализации элементов управления диалогового окна вызовите DoModal функцию-член, чтобы отобразить диалоговое окно и разрешить пользователю выбрать параметры печати. DoModal возвращает значение, выбранное пользователем кнопкой "ОК" (IDOK) или "Отмена" (IDCANCEL).

Если DoModal возвращает идентификатор IDOK, можно использовать несколько CPageSetupDialogфункций-членов или получить доступ к элементу m_psd данных для получения входных данных пользователем.

Примечание.

После закрытия общего диалогового окна установки OLE Page любые изменения, внесенные пользователем, не будут сохранены платформой. Приложение сохраняет все значения из этого диалогового окна в постоянное расположение, например член документа или класса приложения.

Иерархия наследования

CObject

CCmdTarget

CWnd

Cdialog

CCommonDialog

CPageSetupDialog

Требования

Заголовок: afxdlgs.h

CPageSetupDialog::CPageSetupDialog

Вызовите эту функцию для создания CPageSetupDialog объекта.

CPageSetupDialog(
    DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
    CWnd* pParentWnd = NULL);

Параметры

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

  • PSD_DEFAULTMINMARGINS Задает минимальную допустимую ширину полей страницы, совпадающих с минимальными значениями принтера. Этот флаг игнорируется, если также указаны флаги PSD_MARGINS и PSD_MINMARGINS.

  • PSD_INWININIINTLMEASURE Не реализовано.

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

  • PSD_MARGINS активирует область управления полями.

  • PSD_INTHOUSANDTHSOFINCHES приводит к измерению единиц диалогового окна в 1/1000 дюйма.

  • PSD_INHUNDREDTHSOFMILLIMETERS приводит к измерению единиц диалогового окна в 1/100 миллиметра.

  • PSD_DISABLEMARGINS отключает элементы управления диалогового окна поля.

  • PSD_DISABLEPRINTER отключает кнопку "Принтер".

  • PSD_NOWARNING Запрещает отображение предупреждения при отсутствии принтера по умолчанию.

  • PSD_DISABLEORIENTATION Отключает элемент управления диалогового окна ориентации страницы.

  • PSD_RETURNDEFAULT Причины CPageSetupDialog возврата структур DEVMODE и DEVNAMES , которые инициализированы для системного принтера по умолчанию без отображения диалогового окна. Предполагается, что оба hDevNames значения и hDevMode имеют значение NULL; в противном случае функция возвращает ошибку. Если системный принтер по умолчанию поддерживается старым драйвером принтера (более ранней версии Windows 3.0), возвращается hDevMode только hDevNames значение NULL.

  • PSD_DISABLEPAPER отключает элемент управления выбора бумаги.

  • PSD_SHOWHELP приводит к выводу диалогового окна кнопки "Справка". Элемент hwndOwner не должен иметь значение NULL, если этот флаг указан.

  • PSD_ENABLEPAGESETUPHOOK включает функцию перехватчика, указанную в lpfnSetupHook.

  • PSD_ENABLEPAGESETUPTEMPLATE приводит к созданию диалогового окна операционной системы с помощью шаблона диалогового окна, определяемого hInstance и lpSetupTemplateName.

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

  • PSD_ENABLEPAGEPAINTHOOK Включает функцию перехватчика, указанную в lpfnPagePaintHook.

  • PSD_DISABLEPAGEPAINTING Отключает область рисования диалогового окна.

pParentWnd
Указатель на родительский или владелец диалогового окна.

Замечания

Используйте функцию DoModal для отображения диалогового окна.

Пример

void CMyRichEditView::OnPageSetupDlg()
{
   CPageSetupDialog psd(PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS |
      PSD_ENABLEPAGEPAINTHOOK, this);

   // Initialize margins
   psd.m_psd.rtMargin.top = 1000;
   psd.m_psd.rtMargin.left = 1250;
   psd.m_psd.rtMargin.right = 1250;
   psd.m_psd.rtMargin.bottom = 1000;
   psd.m_psd.lpfnPagePaintHook = (LPPAGEPAINTHOOK)PaintHook;

   if (IDOK == psd.DoModal())
   {
      // Propagate changes to the app
      AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
   }
   else
   {
      TRACE(_T("CommDlgExtendedError returned error %d from ")
         _T("CPageSetupDialog::DoModal().\n"),
         (int)CommDlgExtendedError());
   }
}

CPageSetupDialog::CreatePrinterDC

Создает контекст устройства принтера из структур DEVMODE и DEVNAMES .

HDC CreatePrinterDC();

Возвращаемое значение

Обработка только что созданного контекста устройства принтера (DC).

CPageSetupDialog::D oModal

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

virtual INT_PTR DoModal();

Возвращаемое значение

IDOK или IDCANCEL. Если идентификатор IDCANCEL возвращается, вызовите функцию Windows CommDlgExtendedError , чтобы определить, произошла ли ошибка.

IDOK и IDCANCEL — это константы, указывающие, выбран ли пользователь кнопку "ОК" или "Отмена".

Замечания

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

Если вы хотите инициализировать различные параметры диалогового окна настройки страницы, задав элементы структуры, перед вызовом DoModalи после создания объекта диалогового m_psd окна необходимо сделать это. После вызова DoModalвызовите другие функции-члены, чтобы получить параметры или данные, входные пользователем в диалоговое окно.

Если вы хотите распространить текущие параметры, введенные пользователем, вызовите CWinApp::SelectPrinter. Эта функция принимает сведения из CPageSetupDialog объекта и инициализирует и выбирает новый контроллер домена принтера с соответствующими атрибутами.

AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);

Пример

См. пример CPageSetupDialog ::CPageSetupDialog.

CPageSetupDialog::GetDeviceName

Вызовите эту функцию после DoModal получения имени выбранного принтера.

CString GetDeviceName() const;

Возвращаемое значение

Имя устройства, используемое CPageSetupDialog объектом.

CPageSetupDialog::GetDevMode

Вызовите эту функцию после вызова DoModal , чтобы получить сведения о контексте CPageSetupDialog устройства принтера объекта.

LPDEVMODE GetDevMode() const;

Возвращаемое значение

Структура данных DEVMODE, содержащая сведения об инициализации устройства и среде драйвера печати. Необходимо разблокировать память, взятую этой структурой, с помощью функции Windows GlobalUnlock , которая описана в пакете SDK для Windows.

CPageSetupDialog::GetDriverName

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

CString GetDriverName() const;

Возвращаемое значение

Указание CString системного имени драйвера.

Замечания

Используйте указатель на CString объект, возвращаемый GetDriverName в качестве значения lpszDriverName в вызове CDC::CreateDC.

CPageSetupDialog::GetMargins

Вызовите эту функцию после вызова, чтобы DoModal получить поля драйвера устройства принтера.

void GetMargins(
    LPRECT lpRectMargins,
    LPRECT lpRectMinMargins) const;

Параметры

lpRectMargins
Указатель на структуру RECT или объект CRect , описывающий (в 1/1000 дюйма или 1/100 мм) поля печати для выбранного принтера. Передайте значение NULL для этого параметра, если вы не заинтересованы в этом прямоугольнике.

lpRectMinMargins
Указатель на структуру RECT или CRect объект, описывающий (в 1/1000 дюйма или 1/100 мм) минимальные поля печати для выбранного принтера. Передайте значение NULL для этого параметра, если вы не заинтересованы в этом прямоугольнике.

CPageSetupDialog::GetPaperSize

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

CSize GetPaperSize() const;

Возвращаемое значение

Объект CSize, содержащий размер бумаги (в 1/1000 дюйма или 1/100 мм), выбранный для печати.

CPageSetupDialog::GetPortName

Вызовите эту функцию после вызова DoModal , чтобы получить имя выбранного порта принтера.

CString GetPortName() const;

Возвращаемое значение

Имя выбранного порта принтера.

CPageSetupDialog::m_psd

Структура типа PAGESETUPDLG, члены которой хранят характеристики объекта диалогового окна.

PAGESETUPDLG m_psd;

Замечания

После создания CPageSetupDialog объекта можно задать m_psd различные аспекты диалогового окна перед вызовом DoModal функции-члена.

Если изменить m_psd член данных напрямую, вы переопределите любое поведение по умолчанию.

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

См. пример CPageSetupDialog ::CPageSetupDialog.

CPageSetupDialog::OnDrawPage

Вызывается платформой для рисования изображения экрана печатной страницы.

virtual UINT OnDrawPage(
    CDC* pDC,
    UINT nMessage,
    LPRECT lpRect);

Параметры

pDC
Указатель на контекст устройства принтера.

nMessage
Указывает сообщение, указывающее область рисуемой страницы. Может применяться один из перечисленных ниже типов.

  • WM_PSD_FULLPAGERECT Всю область страницы.

  • WM_PSD_MINMARGINRECT текущих минимальных полей.

  • WM_PSD_MARGINRECT текущих полей.

  • WM_PSD_GREEKTEXTRECT Содержимое страницы.

  • WM_PSD_ENVSTAMPRECT область, зарезервированная для представления метки почты.

  • WM_PSD_YAFULLPAGERECT область для представления возвращаемого адреса. Эта область распространяется на края области примера страницы.

lpRect
Указатель на объект CRect или RECT , содержащий координаты области рисования.

Возвращаемое значение

Значение, отличное от нуля, если обрабатывается; в противном случае — 0.

Замечания

Затем этот образ отображается в рамках общего диалогового окна установки OLE-страницы. Реализация по умолчанию рисует изображение страницы текста.

Переопределите эту функцию, чтобы настроить рисунок определенной области изображения или всего изображения. Это можно сделать с помощью инструкции switch с case операторами, проверка значение nMessage. Например, чтобы настроить отрисовку содержимого изображения страницы, можно использовать следующий пример кода:

switch (nMessage)
{
case WM_PSD_GREEKTEXTRECT:
   DrawMyImage(pDC, lpRect);    //draws my special graphic
   return 1;
default:
   return CPageSetupDialog::OnDrawPage(pDC, nMessage, lpRect);
}

Обратите внимание, что вам не нужно обрабатывать каждый случай nMessage. Вы можете обрабатывать один компонент изображения, несколько компонентов изображения или всю область.

CPageSetupDialog::P reDrawPage

Вызывается платформой перед рисованием изображения экрана печатной страницы.

virtual UINT PreDrawPage(
    WORD wPaper,
    WORD wFlags,
    LPPAGESETUPDLG pPSD);

Параметры

wPaper
Указывает значение, указывающее размер бумаги. Это значение может быть одним из DMPAPER_ значений, перечисленных в описании структуры DEVMODE .

wFlags
Указывает ориентацию бумаги или конверта, а также указывает, является ли принтер точечным матрицей или устройством HPPCL (Hewlett Packard Printer Control Language). Этот параметр может принимать одно из следующих значений:

  • 0x001 Бумаги в альбомном режиме (матрица точек)

  • 0x003 Бумаги в альбомном режиме (HPPCL)

  • 0x005 Бумагу в книжном режиме (матрица точек)

  • 0x007 Бумагу в книжном режиме (HPPCL)

  • 0x00b Конверт в альбомном режиме (HPPCL)

  • 0x00d Конверт в книжном режиме (матрица точек)

  • 0x019 Конверт в альбомном режиме (матрица точек)

  • 0x01f Конверт в книжном режиме (матрица точек)

pPSD
Указатель на структуру PAGESETUPDLG. Дополнительные сведения о PAGESETUPDLG см. в пакете SDK для Windows.

Возвращаемое значение

Значение, отличное от нуля, если обрабатывается; в противном случае — 0.

Замечания

Переопределите эту функцию, чтобы настроить рисунок изображения. Если переопределить эту функцию и вернуть значение TRUE, необходимо нарисовать все изображение. Если вы переопределите эту функцию и возвращаете ЗНАЧЕНИЕ FALSE, весь образ по умолчанию рисуется платформой.

См. также

Пример WORDPAD для MFC
Класс CCommonDialog
Диаграмма иерархии