Створення друкованої сторінки

У цьому розділі описано приклад коду, який відображає діалогове вікно Параметри сторінки , так що користувач може вибрати атрибути друкованої сторінки, такі як тип паперу, джерело паперу, орієнтацію сторінки та полів сторінки. Приклади коду першу ініціалізує 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) {
    / / Перевірка паперу розмір поля значення і тут
} 

Наступний приклад показує зразок PagePaintHook гачок процедура, яка приваблює полів прямокутника в області зразок сторінки:

BOOL зворотного ВИКЛИКУ PaintHook (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {LPRECT lprc; 
    COLORREF crMargRect; 
    HDC hdc, hdcOld; 
 
    перемикач (uMsg) {/ / малювання полів прямокутника. 
        справа WM_PSD_MARGINRECT: hdc = wParam (HDC); 
            lprc = lParam (LPRECT); 
 
            / / Отримати колір виділення системи. 
            crMargRect = GetSysColor(COLOR_HIGHLIGHT); 
 
            / / Створення штрихпунктир пера колір виділення системи і / / виділити його в DC зразок сторінки. 
            hdcOld = об'єкт (hdc, CreatePen (PS_DASHDOT,.5, crMargRect)); 
 
            / / Намалювати прямокутник полів. 
            Прямокутник (hdc, lprc gt; ліворуч, lprc - > Топ, lprc - > правою, lprc - > нижній); 
 
            / / Відновлення попередніх пера для постійного струму. 
            Об'єкт (hdc, hdcOld); 
            повертає TRUE; 
 
        за замовчуванням: повернення ПОМИЛКОВИХ; 
    } повернути TRUE; 
} 

 

Index