Создание печатной страницы

В этом разделе описывается пример кода, который отображает диалоговое окно Параметры страницы , так что пользователь может выбрать атрибуты печатной страницы, например, тип бумаги, источник бумаги, ориентацию страницы и поля страницы. В образце кода сначала инициализирующего структуру 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; 
    } Возвращает значение истина; 
} 
 

Index