Bagikan melalui


Arsitektur Pratinjau Cetak

Artikel ini menjelaskan bagaimana kerangka kerja MFC menerapkan fungsionalitas pratinjau cetak. Topik yang dibahas meliputi:

Pratinjau cetak agak berbeda dari tampilan layar dan pencetakan karena, alih-alih langsung menggambar gambar pada perangkat, aplikasi harus mensimulasikan printer menggunakan layar. Untuk mengakomodasi hal ini, Microsoft Foundation Class Library mendefinisikan kelas khusus (tidak terdokumentasi) yang berasal dari Kelas CDC, yang disebut CPreviewDC. Semua CDC objek berisi dua konteks perangkat, tetapi biasanya identik. Dalam objek CPreviewDC , mereka berbeda: yang pertama mewakili printer yang disimulasikan, dan yang kedua mewakili layar di mana output benar-benar ditampilkan.

Proses Pratinjau Cetak

Saat pengguna memilih perintah Pratinjau Cetak dari menu File , kerangka kerja membuat CPreviewDC objek. Setiap kali aplikasi Anda melakukan operasi yang mengatur karakteristik konteks perangkat printer, kerangka kerja juga melakukan operasi serupa pada konteks perangkat layar. Misalnya, jika aplikasi Anda memilih font untuk pencetakan, kerangka kerja memilih font untuk tampilan layar yang mensimulasikan font printer. Setiap kali aplikasi Anda akan mengirim output ke printer, kerangka kerja akan mengirimkan output ke layar.

Pratinjau cetak juga berbeda dari pencetakan dalam urutan yang masing-masing menggambar halaman dokumen. Selama pencetakan, kerangka kerja melanjutkan perulangan cetak hingga rentang halaman tertentu telah dirender. Selama pratinjau cetak, satu atau dua halaman ditampilkan kapan saja, lalu aplikasi menunggu; tidak ada halaman lebih lanjut yang ditampilkan sampai pengguna merespons. Selama pratinjau cetak, aplikasi juga harus merespons pesan WM_PAINT, seperti halnya selama tampilan layar biasa.

Fungsi CView::OnPreparePrinting dipanggil saat mode pratinjau dipanggil, sama seperti di awal pekerjaan cetak. Struktur Struktur CPrintInfo yang diteruskan ke fungsi berisi beberapa anggota yang nilainya dapat Anda atur untuk menyesuaikan karakteristik tertentu dari operasi pratinjau cetak. Misalnya, Anda dapat mengatur anggota m_nNumPreviewPages untuk menentukan apakah Anda ingin mempratinjau dokumen dalam mode satu halaman atau dua halaman.

Memodifikasi Pratinjau Cetak

Anda dapat memodifikasi perilaku dan tampilan pratinjau cetak dengan sejumlah cara yang agak mudah. Misalnya, Anda dapat, antara lain:

  • Menyebabkan jendela pratinjau cetak menampilkan bilah gulir untuk akses mudah ke halaman dokumen mana pun.

  • Menyebabkan pratinjau cetak mempertahankan posisi pengguna dalam dokumen dengan memulai tampilannya di halaman saat ini.

  • Menyebabkan inisialisasi yang berbeda dilakukan untuk pratinjau dan pencetakan cetak.

  • Menyebabkan pratinjau cetak menampilkan nomor halaman dalam format Anda sendiri.

Jika Anda tahu berapa lama dokumen dan memanggil SetMaxPage dengan nilai yang sesuai, kerangka kerja dapat menggunakan informasi ini dalam mode pratinjau serta selama pencetakan. Setelah kerangka kerja mengetahui panjang dokumen, kerangka kerja dapat menyediakan jendela pratinjau dengan bilah gulir, memungkinkan pengguna untuk bolak-balik halaman melalui dokumen dalam mode pratinjau. Jika Anda belum mengatur panjang dokumen, kerangka kerja tidak dapat menempatkan kotak gulir untuk menunjukkan posisi saat ini, sehingga kerangka kerja tidak menambahkan bilah gulir. Dalam hal ini, pengguna harus menggunakan tombol Halaman Berikutnya dan Halaman Sebelumnya pada bilah kontrol jendela pratinjau ke halaman melalui dokumen.

Untuk pratinjau cetak, Anda mungkin merasa berguna untuk menetapkan nilai ke anggota CPrintInfom_nCurPage , meskipun Anda tidak akan pernah melakukannya untuk pencetakan biasa. Selama pencetakan biasa, anggota ini membawa informasi dari kerangka kerja ke kelas tampilan Anda. Ini adalah bagaimana kerangka kerja memberi tahu tampilan halaman mana yang harus dicetak.

Sebaliknya, ketika mode pratinjau cetak dimulai, anggota m_nCurPage membawa informasi ke arah yang berlawanan: dari tampilan ke kerangka kerja. Kerangka kerja menggunakan nilai anggota ini untuk menentukan halaman mana yang harus dipratinjau terlebih dahulu. Nilai default anggota ini adalah 1, sehingga halaman pertama dokumen ditampilkan pada awalnya. Anda dapat mengambil alih OnPreparePrinting untuk mengatur anggota ini ke jumlah halaman yang ditampilkan pada saat perintah Pratinjau Cetak dipanggil. Dengan cara ini, aplikasi mempertahankan posisi pengguna saat ini saat berpindah dari mode tampilan normal ke mode pratinjau cetak.

Terkadang Anda mungkin ingin OnPreparePrinting melakukan inisialisasi yang berbeda tergantung pada apakah itu dipanggil untuk pekerjaan cetak atau untuk pratinjau cetak. Anda dapat menentukan ini dengan memeriksa variabel anggota m_bPreview dalam CPrintInfo struktur. Anggota ini diatur ke TRUE ketika pratinjau cetak dipanggil.

Struktur ini CPrintInfo juga berisi anggota bernama m_strPageDesc, yang digunakan untuk memformat string yang ditampilkan di bagian bawah layar dalam mode satu halaman dan beberapa halaman. Secara default string ini adalah dari formulir "Page n" dan "Pages n - m," tetapi Anda dapat memodifikasi m_strPageDesc dari dalam OnPreparePrinting dan mengatur string ke sesuatu yang lebih rumit. Lihat Struktur CPrintInfo di Referensi MFC untuk informasi selengkapnya.

Baca juga

Pratinjau Pencetakan dan Cetak
Percetakan
Kelas CView
Kelas CDC