Architektura náhled tisku
Tento článek vysvětluje, jak v rámci MFC implementuje funkci náhledu.Témata pokrývají:
Proces náhledu tisku
Úpravy náhledu tisku
Náhled tisku je poněkud odlišné od zobrazení na obrazovce a v tisku, protože namísto přímo kreslení obrazu na zařízení, musí simulovat aplikaci tiskárny na obrazovce.Pro přizpůsobení této knihovny Microsoft Foundation Class definuje speciální (nedokumentovaný) třídy odvozené od Třída Nemocnosti, s názvem CPreviewDC.Všechny CDC objekty obsahují dvě zařízení kontexty, ale obvykle jsou identické.V CPreviewDC objektu jsou různé: tiskárny jsou simulované představuje první a druhý představuje obrazovky, na kterém skutečně zobrazí výstup.
Proces náhled tisku
Když uživatel vybere příkaz Náhled z soubor nabídce rámci vytvoří CPreviewDC objektu.Pokaždé, když aplikace provádí operaci, která nastaví charakteristika kontext zařízení tiskárna, rámci také provádí podobné operace na obrazovce kontextu zařízení.Pokud aplikace Vybere písmo pro tisk, například rámci Vybere písmo pro zobrazení na obrazovce, který simuluje písmo tiskárny.Pokaždé, když aplikace by výstup odeslat do tiskárny, rámci místo odešle výstup na obrazovku.
Náhled tisku se liší od tisku v pořadí, aby každý nakreslí stránek dokumentu.Při tisku, pokračuje rámci tisk opakovat, dokud poskytla rozsah stránek.Při náhledu tisku jedné nebo dvou stránek jsou zobrazeny kdykoli a pak aplikace čeká; žádné další stránky jsou zobrazeny, dokud uživatel neodpoví.Při náhledu tisku aplikace musí také reagovat na WM_PAINT , stejně jako při běžném zobrazení zprávy.
CView::OnPreparePrinting Funkce je volána při režimu náhledu, stejně jako na začátku tiskové úlohy.Struktura CPrintInfo Struktury předaný funkci obsahuje několik členů, jejichž hodnoty můžete nastavit určité vlastnosti operace náhledu upravit.Můžete například nastavit m_nNumPreviewPages člena, určete, zda chcete zobrazit náhled dokumentu v režimu jednostránková nebo dvoustránková.
Úpravy náhledu
Můžete změnit chování a vzhled náhled mnoha způsoby spíše snadno.Například je možné, mimo jiné:
Okno náhledu zobrazit posuvník pro snadný přístup k libovolné stránce dokumentu způsobit.
Náhled tisku způsobit jeho pozici v dokumentu zachovat začátek jeho zobrazení na aktuální stránce
Způsobit různé inicializace provést pro náhled a tisk.
Způsobit náhledu pro zobrazení čísel stránek ve vlastních formátech.
Pokud víte, jak dlouho je dokument a volání SetMaxPage s příslušnou hodnotu rámci tyto informace lze použít v režimu náhledu, stejně jako při tisku.Po rámci zná délku dokumentu, můžete okno náhledu poskytnout posuvník, umožnit uživateli procházet dokument v režimu náhledu stránky tam a zpět.Rámci nenastavili délku dokumentu nelze umístěte tak rámci nelze přidat posuvník označující aktuální pozice posuvníku.Uživatel musí v tomto případě použít další stránka a předchozí stránku tlačítka na ovládacím panelu v okně Náhled stránky v dokumentu.
Pro náhled tisku bude pravděpodobně vhodné přiřadit hodnotu m_nCurPage člen CPrintInfo, i když by nikdy provést pro běžný tisk.Při běžném tisku nese tento člen informace rámci zobrazení třídy.Je to jak rámci říká zobrazení, stránky, které mají být vytištěny.
Naopak při náhledu režimu spuštění, m_nCurPage člen přenáší informace v opačném směru: zobrazení rámce.Rámci použije hodnotu tohoto člena určit stránku, která by nejprve náhledu.Výchozí hodnota této vlastnosti je 1, takže se zpočátku zobrazí první stránku dokumentu.Můžete přepsat OnPreparePrinting tento člen nastavit na číslo stránky zobrazovaný v době byla vyvolána příkaz Náhled.Tímto způsobem aplikace udržuje aktuální pozici uživatele při přesunu z normální režim na režim náhledu.
Někdy můžete chtít OnPreparePrinting provést inicializaci různé v závislosti na tom, zda se nazývá tiskové úlohy nebo náhled tisku.To lze určit porovnáním m_bPreview členské proměnné v CPrintInfo struktury.Tento člen je nastavena na TRUE při náhledu tisku je vyvolána.
CPrintInfo Struktury obsahuje také člen s názvem m_strPageDesc, který se používá k formátování řetězce zobrazeny v dolní části obrazovky v režimech jednostránkové a více stránek.Ve výchozím nastavení jsou tyto řetězce formuláře "stránky n" a "stránky n - m, "ale můžete změnit m_strPageDesc ve OnPreparePrinting a něco komplexnější hodnotu řetězce.Viz Struktura CPrintInfo v MFC odkaz Další informace.