Bagikan melalui


Kotak Dialog Penyetelan Halaman

Menampilkan kotak dialog modal yang memungkinkan pengguna mengatur atribut halaman yang dicetak berikut:

  • Jenis kertas (amplop, hukum, huruf, dan sebagainya)
  • Sumber kertas (umpan manual, umpan traktor, pengumpan lembar, dan sebagainya)
  • Orientasi halaman (potret atau lanskap)
  • Lebar margin halaman

Anda membuat dan menampilkan kotak dialog Penyetelan Halaman dengan menginisialisasi strukturPAGESETUPDLG dan meneruskan struktur ke fungsiPageSetupDlg. Namun, atribut yang disajikan dalam kotak dialog bervariasi, tergantung pada kemampuan printer. Ilustrasi berikut ini memperlihatkan kotak dialog Penyetelan Halaman umum.

Jika pengguna mengklik tombol OK, PageSetupDlg mengembalikan TRUE setelah mengatur berbagai anggota dalam strukturPAGESETUPDLG untuk menentukan pilihan pengguna. ptPaperSize dan anggota rtMargin berisi nilai yang ditentukan oleh pengguna. Anggota hDevMode dan hDevNames berisi handel memori global untukDEVMODEdan strukturDEVNAMES. Struktur ini berisi informasi halaman tambahan serta informasi tentang printer. Anda dapat menggunakan informasi ini untuk menyiapkan output yang akan dikirim ke pencetak terpilih.

Jika pengguna membatalkan kotak dialog Penyetelan Halaman atau terjadi kesalahan, PageSetupDlg mengembalikan FALSE. Untuk menentukan penyebab kesalahan, panggil fungsiCommDlgExtendedError untuk mengambil nilai kesalahan yang diperluas.

Bagian ini membahas topik berikut.

Menginisialisasi Kotak Dialog Penyetelan Halaman

Secara default, kotak dialog Penyetelan Halaman menampilkan informasi tentang printer default saat ini. Untuk mengarahkan kotak dialog untuk menampilkan informasi tentang printer tertentu, atur anggotaDEVMODEatau strukturDEVNAMESdan tetapkan handel memori global struktur ini ke anggota yang sesuai di PAGESETUPDLG. Jika Anda menentukan nama printer yang saat ini tidak diinstal, kotak dialog akan menampilkan pesan kesalahan. Untuk mencegah kotak dialog menampilkan pesan kesalahan, gunakan nilai PSD_NOWARNING. Untuk mengambil informasi tentang printer default tanpa menampilkan kotak dialog Penyetelan Halaman, gunakan nilai PSD_RETURNDEFAULT.

Jika sistem pengukuran default adalah inci, kotak dialog menggunakan ribuan inci sebagai unit pengukuran default. Jika sistem pengukuran default adalah metrik, kotak dialog menggunakan seratus milimeter sebagai unit pengukuran default. Untuk mengambil alih satuan pengukuran default, atur bendera PSD_INHUNDREDTHSOFMILLIMETERS atau PSD_INTHOUSANDTHSOFINCHES di Bendera anggota struktur PAGESETUPDLG.

Nilai awal untuk margin adalah satu inci, secara default. Jika Anda mengatur bendera PSD_MARGINS, kotak dialog menampilkan nilai margin awal yang ditentukan dalam anggota rtMargin. Nilai minimum default yang dapat ditentukan pengguna untuk margin adalah margin minimum yang diizinkan oleh printer. Jika Anda mengatur bendera PSD_MINMARGINS, kotak dialog memberlakukan margin minimum yang ditentukan dalam anggota rtMinMargin.

Untuk mencegah pengguna memilih opsi tertentu, atur kombinasi bendera berikut untuk menonaktifkan kontrol yang sesuai.

Bendera Arti
PSD_DISABLEMARGINS Menonaktifkan kontrol edit tempat pengguna memasuki pengaturan margin.
PSD_DISABLEORIENTATION Menonaktifkan Potret dan tombol radio Lanskap.
PSD_DISABLEPAPER Menonaktifkan kontrol untuk memilih ukuran kertas dan sumber kertas.
PSD_DISABLEPRINTER Menonaktifkan tombol Printer.

 

Mengkustomisasi Kotak Dialog Penyetelan Halaman

Anda dapat menyediakan templat kustom untuk kotak dialog Penyetelan Halaman, misalnya, jika Anda ingin menyertakan kontrol tambahan yang unik untuk aplikasi Anda. FungsiPageSetupDlg menggunakan templat kustom Anda sebagai pengganti templat default.

Untuk menyediakan templat kustom untuk kotak dialog Penyetelan Halaman

  1. Buat templat kustom dengan memodifikasi templat default yang ditentukan dalam file Prnsetup.dlg. Pengidentifikasi kontrol yang digunakan dalam templat dialog Penyiapan Halaman default ditentukan dalam file Dlgs.h.
  2. Gunakan strukturPAGESETUPDLG untuk mengaktifkan templat sebagai berikut:
      • Jika templat kustom Anda adalah sumber daya dalam aplikasi atau pustaka tautan dinamis, atur bendera PSD_ENABLEPAGESETUPTEMPLATE di Flags anggota. Gunakan hInstance dan lpageSetupTemplateName anggota struktur untuk mengidentifikasi modul dan nama sumber daya.

        -Atau-

      • Jika templat kustom Anda sudah dalam memori, atur bendera PSD_ENABLEPAGESETUPTEMPLATEHANDLE. Gunakan hPageSetupTemplate anggota untuk mengidentifikasi objek memori yang berisi templat.

Untuk memfilter pesan yang dikirim ke prosedur kotak dialog, Anda bisa menyediakan prosedur PageSetupHook hook. Jika Anda menggunakan templat kustom untuk menentukan kontrol tambahan, Anda harus menyediakan prosedur PageSetupHook hook untuk memproses input untuk kontrol Anda. Selain itu, Anda dapat menyediakan prosedur kaitPagePaintHookuntuk mengkustomisasi konten halaman sampel yang ditampilkan oleh kotak dialog Penyetelan Halaman. Untuk informasi selengkapnya tentang prosedur hook PagePaintHook, lihat Menyesuaikan Halaman Sampel.

Untuk mengaktifkan prosedur hook PageSetupHook

  1. Atur bendera PSD_ENABLEPAGESETUPHOOK di Bendera anggota strukturPAGESETUPDLG.
  2. Tentukan alamat prosedur kait di lpfnPageSetupHook anggota.

Setelah memproses pesan WM_INITDIALOG, prosedur kotak dialog mengirimkan pesan WM_INITDIALOG ke prosedur hook PageSetupHook. Parameter lParam pesan ini adalah penunjuk ke strukturPAGESETUPDLG yang digunakan untuk menginisialisasi kotak dialog.

Mengkustomisasi Halaman Sampel

Kotak dialog Penyetelan Halaman menyertakan gambar halaman sampel yang memperlihatkan bagaimana pilihan pengguna memengaruhi tampilan output yang dicetak. Gambar terdiri dari persegi panjang yang mewakili tipe kertas atau amplop yang dipilih, dengan persegi panjang garis putus-putus yang mewakili margin saat ini, dan karakter parsial (teks Yunani) untuk memperlihatkan tampilan teks pada halaman cetak.

Saat Anda memanggil fungsiPageSetupDlg, Anda dapat menyediakan pagePaintHook prosedur kait untuk menyesuaikan tampilan halaman sampel.

Untuk mengaktifkan prosedur hook PagePaintHook

  1. Atur bendera PSD_ENABLEPAGEPAINTHOOK di Bendera anggota strukturPAGESETUPDLG.
  2. Tentukan alamat prosedur kait di anggota lpfnPagePaintHook.

Setiap kali kotak dialog akan menggambar konten halaman sampel, prosedur kait menerima pesan berikut dalam urutan di mana mereka dicantumkan.

Pesan Arti
WM_PSD_PAGESETUPDLG Kotak dialog akan menggambar halaman sampel. Prosedur kait dapat menggunakan pesan ini untuk bersiap menggambar konten halaman sampel.
WM_PSD_FULLPAGERECT Kotak dialog akan menggambar halaman sampel. Pesan ini menentukan persegi panjang pembatas halaman sampel.
WM_PSD_MINMARGINRECT Kotak dialog akan menggambar halaman sampel. Pesan ini menentukan persegi margin.
WM_PSD_MARGINRECT Kotak dialog akan menggambar persegi margin.
WM_PSD_GREEKTEXTRECT Kotak dialog akan menggambar teks Yunani di dalam persegi margin.
WM_PSD_ENVSTAMPRECT Kotak dialog akan menggambar dalam persegi panjang stempel amplop dari halaman sampel amplop. Pesan ini dikirim hanya untuk amplop.
WM_PSD_YAFULLPAGERECT Kotak dialog akan menggambar bagian alamat pengembalian dari halaman sampel amplop. Pesan ini dikirim untuk amplop dan ukuran kertas lainnya.

 

Jika prosedur kait mengembalikan TRUE untuk salah satu dari tiga pesan pertama dari urutan gambar (WM_PSD_PAGESETUPDLG, WM_PSD_FULLPAGERECT, atau WM_PSD_MINMARGINRECT) kotak dialog tidak mengirim lebih banyak pesan dan tidak menggambar di halaman sampel sampai kali berikutnya sistem perlu menggambar ulang halaman sampel. Jika prosedur kait mengembalikan FALSE untuk ketiga pesan, kotak dialog akan mengirim pesan yang tersisa dari urutan gambar.

Jika prosedur hook mengembalikan TRUE untuk salah satu pesan yang tersisa dalam urutan gambar, kotak dialog tidak menggambar bagian yang sesuai dari halaman sampel. Jika prosedur kait mengembalikan FALSE untuk salah satu pesan ini, kotak dialog akan menggambar bagian halaman sampel tersebut.

Untuk mencegah kotak dialog menggambar konten halaman sampel, Anda bisa mengatur bendera PSD_DISABLEPAGEPAINTING. Bendera ini tidak memengaruhi prosedur kaitPagePaintHookAnda, yang masih menerima semua pesan WM_PSD_* dan dapat menggambar konten halaman sampel.