Aracılığıyla paylaş


Baskı Önizleme Mimarisi

Bu makalede, MFC çerçevesinin baskı önizleme işlevselliğini nasıl uyguladığı açıklanmaktadır. Ele alınan konular:

Baskı önizleme, ekran görüntüsünden ve yazdırmadan biraz farklıdır çünkü bir cihaza doğrudan resim çizmek yerine uygulamanın ekranı kullanarak yazıcının benzetimini yapması gerekir. Buna uyum sağlamak için Microsoft Foundation Sınıf Kitaplığı, CDC Sınıfından türetilen adlı CPreviewDCözel (belgelenmemiş) bir sınıf tanımlar. Tüm CDC nesneler iki cihaz bağlamı içerir, ancak genellikle aynıdır. Bir CPreviewDC nesnede bunlar farklıdır: birincisi simülasyonu yapılan yazıcıyı, ikincisi ise çıkışın gerçekten görüntülendiği ekranı temsil eder.

Baskı Önizleme İşlemi

Kullanıcı Dosya menüsünden Baskı Önizleme komutunu seçtiğinde çerçeve bir CPreviewDC nesne oluşturur. Uygulamanız yazıcı cihaz bağlamının bir özelliğini ayarlayan bir işlem gerçekleştirdikten sonra çerçeve, ekran cihazı bağlamında da benzer bir işlem gerçekleştirir. Örneğin, uygulamanız yazdırma için bir yazı tipi seçerse çerçeve, ekran görüntüsü için yazıcı yazı tipinin benzetimini sağlayan bir yazı tipi seçer. Uygulamanız yazıcıya çıkış gönderdiğinde, çerçeve bunun yerine çıkışı ekrana gönderir.

Baskı önizleme, her birinin belgenin sayfalarını çizme sırasına göre yazdırma işleminden de farklıdır. Yazdırma sırasında çerçeve, belirli bir sayfa aralığı işlenene kadar yazdırma döngüsüne devam eder. Baskı önizleme sırasında, herhangi bir anda bir veya iki sayfa görüntülenir ve uygulama bekler; kullanıcı yanıt verene kadar başka sayfa görüntülenmez. Baskı önizleme sırasında, uygulamanın normal ekran görüntüsü sırasında olduğu gibi WM_PAINT iletilerine de yanıt vermesi gerekir.

CView::OnPreparePrinting işlevi, tıpkı yazdırma işinin başında olduğu gibi önizleme modu çağrıldığında çağrılır. İşleve geçirilen CPrintInfo Yapısı yapısı, değerlerini baskı önizleme işleminin belirli özelliklerini ayarlamak için ayarlayabileceğiniz birkaç üye içerir. Örneğin, belgeyi tek sayfalı mı yoksa iki sayfalı modda mı önizlemek istediğinizi belirtmek için m_nNumPreviewPages üyesini ayarlayabilirsiniz.

Baskı Önizlemeyi Değiştirme

Baskı önizlemenin davranışını ve görünümünü birkaç yolla kolayca değiştirebilirsiniz. Örneğin, aşağıdakileri de yapabilirsiniz:

  • Belgenin herhangi bir sayfasına kolay erişim için baskı önizleme penceresinin bir kaydırma çubuğu görüntülemesine neden olur.

  • Geçerli sayfada görüntülemeye başlayarak kullanıcının belgedeki konumunu korumak için baskı önizlemeye neden olur.

  • Baskı önizleme ve yazdırma için farklı başlatmalar yapılmasına neden olur.

  • Baskı önizlemenin sayfa numaralarını kendi biçimlerinizde görüntülemesine neden olur.

Belgenin ne kadar uzun olduğunu biliyorsanız ve uygun değerle çağırırsanız SetMaxPage , çerçeve bu bilgileri hem önizleme modunda hem de yazdırma sırasında kullanabilir. Çerçeve belgenin uzunluğunu öğrendiğinde önizleme penceresine bir kaydırma çubuğu sağlayarak kullanıcının belgeyi önizleme modunda ileri geri sayfalamasına olanak tanır. Belgenin uzunluğunu ayarlamadıysanız, çerçeve geçerli konumu belirtmek için kaydırma kutusunu konumlandıramaz, bu nedenle çerçeve kaydırma çubuğu eklemez. Bu durumda, kullanıcının belgeyi sayfalandırmak için önizleme penceresinin denetim çubuğundaki Sonraki Sayfa ve Önceki Sayfa düğmelerini kullanması gerekir.

Baskı önizleme için, normal yazdırma için bunu hiçbir zaman yapmazsanız bile m_nCurPage üyesine CPrintInfobir değer atamayı yararlı bulabilirsiniz. Sıradan yazdırma sırasında, bu üye çerçeveden görünüm sınıfınıza bilgi taşır. Çerçeve, hangi sayfanın yazdırılması gerektiğini görünüme bu şekilde bildirir.

Buna karşılık, baskı önizleme modu başlatıldığında , m_nCurPage üyesi bilgileri ters yönde taşır: görünümden çerçeveye. Çerçeve, önce hangi sayfanın önizleneceğini belirlemek için bu üyenin değerini kullanır. Bu üyenin varsayılan değeri 1'dir, bu nedenle belgenin ilk sayfası başlangıçta görüntülenir. Bu üyeyi Baskı Önizleme komutunun çağrıldığı sırada görüntülenen sayfa sayısına ayarlamak için geçersiz kılabilirsiniz OnPreparePrinting . Bu şekilde uygulama, normal görüntü modundan baskı önizleme moduna geçerken kullanıcının geçerli konumunu korur.

Bazen, yazdırma işi veya baskı önizleme için çağrıldığına bağlı olarak farklı başlatma gerçekleştirmek isteyebilirsiniz OnPreparePrinting . Yapıdaki CPrintInfo m_bPreview üye değişkenini inceleyerek bunu belirleyebilirsiniz. Baskı önizleme çağrıldığında bu üye TRUE olarak ayarlanır.

Yapı CPrintInfo ayrıca tek sayfalı ve çok sayfalı modlarda ekranın alt kısmında görüntülenen dizeleri biçimlendirmek için kullanılan m_strPageDesc adlı bir üye içerir. Varsayılan olarak bu dizeler "Sayfa n" ve "Sayfa n - m" biçimindedir, ancak m_strPageDesc içinden OnPreparePrinting değiştirebilir ve dizeleri daha ayrıntılı bir şekilde ayarlayabilirsiniz. Daha fazla bilgi için bkz. MFC Başvurusu'nda CPrintInfo Yapısı.

Ayrıca bkz.

{1>Yazdırma ve yazdırma önizleme<1}
Yazdırma
CView Sınıfı
CDC Sınıfı