Baskı Önizleme mimarisi
Bu makalede, mfc framework Baskı Önizleme işlevi nasıl uyguladığı açıklanır. Kapsanan konular şunlardır:
Baskı Önizleme işlemini
Baskı Önizleme değiştirme
Baskı Önizleme ekran ve yazdırma biraz farklı, doğrudan görüntü aygıt üzerinde çizim yerine uygulama ekran kullanarak yazıcıyı taklit gerekir çünkü. Bunu yapabilmek için Microsoft Foundation Class Library türetilen özel (belgelenmemiş) sınıf tanımlar CDC Sınıfıadlı CPreviewDC. Tüm CDC nesneleri içeren iki aygıt içerik ancak genellikle aynı olur. İçinde bir CPreviewDC farklı oldukları nesne: ilk simülasyonu yazıcı ve ikinci ekran üzerinde çıktı aslında görüntülenir temsil eder.
Baskı Önizleme işlemini
Kullanıcının seçtiği Baskı Önizleme komutunu kullandığınızda Dosya menüsünde çerçeve oluşturur bir CPreviewDC nesnesi. Uygulamanızın olmayacağı yazıcı aygıt içeriğini ayarlayan bir işlemi gerçekleştirirken framework ayrıca ekran aygıt içeriği benzer bir işlemi gerçekleştirir. Örneğin, uygulamanızın bir yazı tipi yazdırma için seçerse, framework taklit eden bir yazıcı yazı tipi ekran görüntüsü için bir yazı tipi seçer. Uygulamanız çıktı yazıcıya göndermek her framework çıktısını ekran yerine gönderir.
Baskı önizlemede Ayrıca her bir belgenin sayfaları çizer sırada yazdırma farklıdır. Belirli bir sayfa aralığını işlenmiş kadar yazdırma sırasında yazdırma döngü framework devam eder. Baskı Önizleme sırasında herhangi bir anda bir veya iki sayfası görüntülenir ve sonra uygulamayı bekler; kullanıcının yanıt verinceye kadar başka bir sayfa görüntülenir. Baskı Önizleme sırasında uygulama da yanıtlaması gereken WM_PAINT iletileri sırasında normal ekran gibi.
CView::OnPreparePrinting İşlevi çağrılırsa önizleme modu çalıştırıldığında, bir yazdırma işinin başında olduğu gibi. CPrintInfo yapısı İşlevine geçirilen yapısı içeren birkaç üye değerleri baskı önizleme işlemini belirli özelliklerini ayarlamak için ayarlayabilirsiniz. Örneğin, set m_nNumPreviewPages modunda, tek sayfalı veya iki sayfalı belgenin önizlemesini yapmak isteyip istemediğinizi belirtmek için üye.
Baskı Önizleme'yi değiştirme
Çeşitli Baskı Önizleme görünümünü ve davranışını yerine kolayca değiştirebilirsiniz. Örneğin, baþka þeyler yapabilirsiniz:
Belgenin herhangi bir sayfaya kolay erişim için kaydırma çubuğunu görüntülemek Baskı Önizleme penceresini neden.
Görüntüyü geçerli sayfada başlayarak kullanıcının belge içindeki konumunu korumak Baskı Önizleme neden.
Baskı Önizleme ve yazdırma için gerçekleştirilecek farklı başlatma neden.
Kendi biçimlerinizi sayfa numaralarını görüntülemek Baskı Önizleme neden.
Belge ne olduğunu biliyor ve çağrı SetMaxPage uygun değerle framework bu bilgiyi önizleme modunda yanı yazdırma sırasında kullanabilirsiniz. Çerçeve belge uzunluğunu bilir bir kez, önizleme penceresinde bir kaydırma çubuğu, kullanıcının belgeyi Önizleme modunda dolaşın ve geriye sağlayabilir. Belge uzunluğunu ayarlamadıysanız, Çerçeve Çerçeve kaydırma çubuğu eklemez için geçerli konumu belirtmek için kaydırma kutucuğunu olamaz. Bu durumda, kullanıcının sonraki sayfa ve önceki sayfa düğmeleri önizleme penceresinin denetim çubuğunda belge sayfasından kullanmanız gerekir.
Baskı Önizleme için bir değer atamak yararlı m_nCurPage üyesi CPrintInfo, hiçbir zaman sıradan yazdırma için bunu halde. Normal yazdırma sırasında bu üye görünümü sınıfınız için framework bilgileri taşır. Hangi sayfanın yazdırılması gereken framework görünümü nasıl söyler budur.
Bunun aksine, baskı önizleme modunda başlatıldığında, m_nCurPage üye ters yönde bilgi taşır: görünümden çerçevesi. Çerçevesi, hangi sayfanın ilk önizlemesi belirlemek için bu üyenin değeri kullanır. Böylece belgenin ilk sayfası başlangıçta görüntülenen bu varsayılan değer 1 ' dir. Geçersiz kılmak OnPreparePrinting Bu üye Baskı Önizleme komutunu çağrıldı.%0 anda görüntülenen sayfa sayısını ayarlamak için. Bu şekilde, normal görünüm modundan Baskı Önizleme modunu taşırken uygulama kullanıcının geçerli konumunu korur.
Bazen isteyebilirsiniz OnPreparePrinting olup, baskı önizleme veya yazdırma işi için denir bağlı farklı başlatması gerçekleştiremedi. İnceleyerek belirleyebilirsiniz m_bPreview üye değişkeni CPrintInfo yapısı. Bu üye ayarlamak doğru , baskı önizleme çağrıldığında.
CPrintInfo Yapısı da içeren adlı bir üye m_strPageDesc, hangi ekranın alt kısmındaki sayfa tek ve çok sayfalı modlarında görüntülenen dizeleri biçimlendirmek için kullanılır. Varsayılan olarak bu dizeleri olarak "Sayfa n" ve "Sayfa n - m, "Ancak, değişiklik m_strPageDesc içinden OnPreparePrinting ve dizeleri daha karmaşık şeyler için ayarlayın. Bkz: CPrintInfo yapısı , mfc başvuru daha fazla bilgi için.