Architektura podglądu wydruku
W tym artykule wyjaśniono, jak struktura MFC implementuje funkcję podglądu wydruku. Omawiane tematy to m.in.:
Podgląd wydruku różni się nieco od wyświetlania i drukowania ekranu, ponieważ zamiast bezpośredniego rysowania obrazu na urządzeniu aplikacja musi symulować drukarkę przy użyciu ekranu. W tym celu biblioteka klas programu Microsoft Foundation definiuje specjalną (nieudokumentowaną) klasę pochodzącą z klasy CDC o nazwie CPreviewDC
. Wszystkie CDC
obiekty zawierają dwa konteksty urządzenia, ale zwykle są identyczne. CPreviewDC
W obiekcie są różne: pierwszy reprezentuje symulowaną drukarkę, a drugi reprezentuje ekran, na którym są wyświetlane dane wyjściowe.
Proces podglądu wydruku
Gdy użytkownik wybierze polecenie Podgląd wydruku z menu Plik , platforma utworzy CPreviewDC
obiekt. Za każdym razem, gdy aplikacja wykonuje operację, która określa charakterystykę kontekstu urządzenia drukarki, struktura wykonuje również podobną operację w kontekście urządzenia ekranu. Jeśli na przykład aplikacja wybierze czcionkę do drukowania, platforma wybierze czcionkę na ekranie, która symuluje czcionkę drukarki. Za każdym razem, gdy aplikacja wysyła dane wyjściowe do drukarki, zamiast tego platforma wysyła dane wyjściowe do ekranu.
Podgląd wydruku różni się również od drukowania w kolejności, w jaką każda z nich rysuje strony dokumentu. Podczas drukowania struktura kontynuuje pętlę drukowania do momentu renderowania określonego zakresu stron. Podczas podglądu wydruku jedna lub dwie strony są wyświetlane w dowolnym momencie, a następnie aplikacja czeka; żadne dalsze strony nie są wyświetlane, dopóki użytkownik nie odpowie. Podczas podglądu wydruku aplikacja musi również reagować na WM_PAINT komunikatów, podobnie jak podczas zwykłego wyświetlania ekranu.
Funkcja CView::OnPreparePrinting jest wywoływana, gdy jest wywoływany tryb podglądu, podobnie jak na początku zadania drukowania. Struktura CPrintInfo przekazana do funkcji zawiera kilka elementów członkowskich, których wartości można ustawić w celu dostosowania pewnych cech operacji podglądu wydruku. Można na przykład ustawić element członkowski m_nNumPreviewPages , aby określić, czy chcesz wyświetlić podgląd dokumentu w trybie jednostronicowym, czy dwustronicowym.
Modyfikowanie podglądu wydruku
Zachowanie i wygląd podglądu wydruku można modyfikować na wiele sposobów, a raczej łatwo. Można na przykład między innymi:
Umożliwia wyświetlenie paska przewijania w celu ułatwienia dostępu do dowolnej strony dokumentu w oknie podglądu wydruku.
Wyświetl podgląd wydruku, aby zachować pozycję użytkownika w dokumencie, rozpoczynając jego wyświetlanie na bieżącej stronie.
Powoduje wykonanie różnych inicjalizacji na potrzeby podglądu wydruku i drukowania.
Umożliwia wyświetlanie numerów stron w podglądzie wydruku we własnych formatach.
Jeśli wiesz, jak długo dokument jest i wywołujesz SetMaxPage
odpowiednią wartość, platforma może używać tych informacji w trybie podglądu, a także podczas drukowania. Gdy platforma zna długość dokumentu, może udostępnić okno podglądu z paskiem przewijania, dzięki czemu użytkownik może stronicować go w trybie podglądu. Jeśli nie ustawiono długości dokumentu, platforma nie może umieścić pola przewijania w celu wskazania bieżącej pozycji, więc struktura nie dodaje paska przewijania. W takim przypadku użytkownik musi używać przycisków Następna strona i Poprzednia strona na pasku sterowania okna podglądu, aby stronicować dokument.
W przypadku podglądu wydruku warto przypisać wartość do elementu członkowskiego m_nCurPage CPrintInfo
, mimo że nigdy nie zrobisz tego w przypadku zwykłego drukowania. Podczas zwykłego drukowania ten element członkowski zawiera informacje ze struktury do klasy widoków. W ten sposób struktura informuje widok, która strona powinna zostać wydrukowana.
Natomiast po uruchomieniu trybu podglądu wydruku element członkowski m_nCurPage przenosi informacje w przeciwnym kierunku: od widoku do platformy. Platforma używa wartości tego elementu członkowskiego, aby określić, która strona powinna być najpierw podglądowana. Wartość domyślna tego elementu członkowskiego to 1, więc pierwsza strona dokumentu jest początkowo wyświetlana. Możesz przesłonić OnPreparePrinting
, aby ustawić ten element członkowski na liczbę wyświetlanych stron w momencie wywołania polecenia Podgląd wydruku. Dzięki temu aplikacja utrzymuje bieżącą pozycję użytkownika podczas przechodzenia z trybu normalnego wyświetlania do trybu podglądu wydruku.
Czasami możesz chcieć OnPreparePrinting
wykonać inicjację w zależności od tego, czy jest wywoływana dla zadania drukowania, czy podglądu wydruku. Można to określić, sprawdzając zmienną składową m_bPreview w CPrintInfo
strukturze. Ten element członkowski ma wartość TRUE po wywołaniu podglądu wydruku.
Struktura CPrintInfo
zawiera również składową o nazwie m_strPageDesc, która służy do formatowania ciągów wyświetlanych w dolnej części ekranu w trybach jednostronicowych i wielostronicowych. Domyślnie te ciągi mają postać "Page n" i "Pages n - m", ale można modyfikować m_strPageDesc z wewnątrz OnPreparePrinting
i ustawiać ciągi na bardziej rozbudowane. Aby uzyskać więcej informacji, zobacz CPrintInfo Structure in the MFC Reference (Struktura CPrintInfo w dokumentacji MFC).
Zobacz też
Drukowanie i podgląd wydruku
Drukowanie
Klasa CView
Klasa CDC