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
- Mengkustomisasi kotak dialog Penyetelan Halaman
- Menyesuaikan Halaman Sampel
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
- 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.
- 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
- Atur bendera PSD_ENABLEPAGESETUPHOOK di Bendera anggota strukturPAGESETUPDLG.
- 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
- Atur bendera PSD_ENABLEPAGEPAINTHOOK di Bendera anggota strukturPAGESETUPDLG.
- 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.