В этом разделе описывается пример кода, который отображает диалоговое окно Параметры страницы , так что пользователь может выбрать атрибуты печатной страницы, например, тип бумаги, источник бумаги, ориентацию страницы и поля страницы. В образце кода сначала инициализирующего структуру PAGESETUPDLG , а затем вызывает функцию PageSetupDlg для отображения диалогового окна.
Этот пример устанавливает флаг PSD_MARGINS в странах-членах флаги и использует элемент rtMargin для указания значения начального допустимого предела. Он устанавливает флаг PSD_INTHOUSANDTHSOFINCHES для обеспечения диалогового окна выражает измерения разницы в тысячных долях дюйма.
На входе пример кода задает членов hDevMode и hDevNames в значение NULL. Если функция возвращает значение TRUE, функция использует эти элементы для возврата дескрипторы для DEVMODE и DEVNAMES, относящейся структур, содержащих введенный пользователем и сведений о принтере. Можно использовать эту информацию для подготовки вывода следует направлять на выбранном принтере.
Пример также позволяет PagePaintHook процедуру подключения для настройки рисования содержимое образца страницы.
PAGESETUPDLG psd; / / общее диалоговое окно поле структуры
HWND hwnd; / / окно-владелец
/ / Инициализировать PAGESETUPDLG
ZeroMemory (amp; psd, sizeof(PAGESETUPDLG));
PSD.lStructSize = sizeof(PAGESETUPDLG);
PSD.hwndOwner = hwnd;
PSD.hDevMode = NULL; / / Не забудьте освободить или хранить hDevMode.
PSD.hDevNames = NULL; / / Не забудьте освободить или хранить
hDevNames.
PSD.Флаги = PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS |
PSD_ENABLEPAGEPAINTHOOK;
PSD.rtMargin.TOP = 1000;
PSD.rtMargin.Left = 1250;
PSD.rtMargin.Right = 1250;
PSD.rtMargin.Bottom = 1000;
PSD.lpfnPagePaintHook = PaintHook;
Если (PageSetupDlg(&psd) == TRUE) {}
/ / check бумаги размера разницы значений и здесь
}
В следующем примере показано процедуру подключения PagePaintHook образца, который рисует прямоугольник разницы в области образец страницы:
BOOL обратного ВЫЗОВА PaintHook (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {LPRECT ЛПРК;
COLORREF crMargRect;
HDC hdc, hdcOld;
переключатель (uMsg) {/ / Рисование прямоугольника разницы.
дело WM_PSD_MARGINRECT: hdc = wParam (HDC);
ЛПРК = lParam (LPRECT);
/ / Получить цвет выделения системы.
crMargRect = GetSysColor(COLOR_HIGHLIGHT);
/ / Создание штрих точки пера системного цвета выделения и / / выберите его в DC образца страницы.
hdcOld = SelectObject (hdc, CreatePen (PS_DASHDOT,.5, crMargRect));
/ / Поле прямоугольника.
Прямоугольник (hdc, ЛПРК gt; слева, ЛПРК - > топ, ЛПРК - > правой, ЛПРК - > снизу);
/ / Восстановление предыдущих перо к контроллеру домена.
SelectObject (hdc, hdcOld);
Возвращает значение TRUE;
по умолчанию: вернуть значение FALSE;
} Возвращает значение истина;
}