Ustawienie wydruku

W tym temacie opisano przykładowy kod, który wyświetla okno dialogowe Ustawienia strony , użytkownik może zaznaczyć atrybuty drukowanej stronie, takie jak typ papieru, źródło papieru, orientację strony i marginesów strony. Przykładowy kod najpierw inicjuje strukturę PAGESETUPDLG , a następnie wywołuje funkcję PageSetupDlg , aby wyświetlić okno dialogowe.

W tym przykładzie ustawia flagę PSD_MARGINS Członkowskich flagi i używa Państwa rtMargin do określenia wartości Początkowy depozyt. Ustawia flagi PSD_INTHOUSANDTHSOFINCHES, aby zapewnić, że okno dialogowe wyraża margines wymiary w tysięcznych cala.

Na wejściu przykładowy kod ustawia pole hDevMode i hDevNames członków null. Jeśli funkcja zwraca wartość PRAWDA, funkcja używa tych członków do zwrotu dojścia do DEVMODE i DEVNAMES struktur zawierających wejściowych użytkownika i informacje o drukarce. Te informacje można użyć do przygotowania danych wyjściowych do wysłania do wybranej drukarki.

Przykład umożliwia także procedura haka PagePaintHook dostosować rysunku zawartość przykładowa strona.

PAGESETUPDLG psd;    / / wspólne dialogowego struktury
HWND hwnd;           / / właściciel okna

/ / Inicjuj PAGESETUPDLG
ZeroMemory (amp; psd, sizeof(PAGESETUPDLG));
PSD.lStructSize = sizeof(PAGESETUPDLG);
PSD.hwndOwner = hwnd;
PSD.hDevMode = NULL; / / Nie zapomnij wolne lub przechowywania pole hDevMode.
PSD.hDevNames = NULL; / / Nie zapomnij wolne lub przechowywania
                  hDevNames.
PSD.Flagi = 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;

Jeżeli (PageSetupDlg(&psd) == TRUE) {}
    / / Sprawdź papier rozmiaru i marginesu wartości tutaj
} 

W poniższym przykładzie przedstawiono procedurę haka PagePaintHook próbki, która rysuje prostokąt marginesu w obszarze strony próbki:

BOOL wywołania zwrotnego PaintHook (HWND hwndDlg, UINT uMsg, WPARAM wParam, FIKCYJNYMI fikcyjnymi) {LPRECT lprc; 
    COLORREF crMargRect; 
    HDC hdc, hdcOld; 
 
    Przełącznik (uMsg) {/ / Rysowanie prostokąta marginesu. 
        Sprawa WM_PSD_MARGINRECT: hdc = wParam (HDC); 
            lprc = fikcyjnymi (LPRECT); 
 
            / / Get kolor podświetlenia systemu. 
            crMargRect = GetSysColor(COLOR_HIGHLIGHT); 
 
            / / Create pióro kreska-kropka-kropka koloru podświetlenia systemu i / / zaznacz go do DC przykładową stronę. 
            hdcOld = WybierzObiekt (hdc, CreatePen (PS_DASHDOT,.5, crMargRect)); 
 
            / / Narysować prostokąt marginesu. 
            Prostokąt (hdc, lprc-gt; po lewej, lprc - > Górny, lprc - > prawo, lprc - > dolnej); 
 
            / / Przywracanie poprzednich pióra na kontrolerze domeny. 
            WybierzObiekt (hdc, hdcOld); 
            Zwraca wartość PRAWDA; 
 
        Domyślnie: return FALSE; 
    } Zwraca wartość PRAWDA; 
} 

 

Index