Класс 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 любые изменения, внесенные пользователем, не будут сохранены платформой. Приложение сохраняет все значения из этого диалогового окна в постоянное расположение, например член документа или класса приложения.
Иерархия наследования
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
Диаграмма иерархии