Kotak Dialog Cetak

Kotak dialog Cetak memungkinkan pengguna memilih opsi untuk pekerjaan cetak tertentu. Misalnya, pengguna dapat menentukan printer yang akan digunakan, rentang halaman yang akan dicetak, dan jumlah salinan.

Anda dapat menggunakan fungsi PrintDlgEx untuk menampilkan Lembar Properti Cetak, yang memiliki halaman Umum yang berisi kontrol yang mirip dengan kotak dialog Cetak . Lembar properti juga dapat memiliki halaman properti khusus aplikasi dan khusus driver tambahan mengikuti halaman Umum .

Anda membuat dan menampilkan kotak dialog Cetak dengan menginisialisasi struktur PRINTDLG dan meneruskan struktur ke fungsi PrintDlg .

Ilustrasi berikut ini memperlihatkan kotak dialog Cetak yang khas.

print dialog box

Jika pengguna mengklik tombol OK , PrintDlg mengembalikan TRUE dan menggunakan struktur PRINTDLG untuk mengembalikan informasi tentang pilihan pengguna. Misalnya, anggota hDevMode dan hDevNames biasanya mengembalikan handel memori global untuk dan struktur DEVNAMES . Anda dapat menggunakan informasi dalam struktur ini untuk membuat konteks perangkat atau konteks informasi untuk printer yang dipilih.

Jika pengguna membatalkan kotak dialog Cetak atau terjadi kesalahan, PrintDlg mengembalikan FALSE. Anda dapat menentukan penyebab kesalahan dengan menggunakan fungsi CommDlgExtendedError untuk mengambil nilai kesalahan yang diperluas.

Kotak dialog Cetak menyertakan grup Rentang Cetak tombol radio yang menunjukkan apakah pengguna ingin mencetak semua halaman, rentang halaman, atau hanya teks terpilih. Sebelum memanggil PrintDlg, Anda dapat mengatur salah satu bendera PD_ALLPAGES, PD_SELECTION, atau PD_PAGENUMS untuk menunjukkan tombol mana yang awalnya dipilih. Ketika PrintDlg mengembalikan TRUE, fungsi mengatur salah satu bendera ini untuk menunjukkan pilihan pengguna. Jika PD_PAGENUMS diatur, anggota nFromPage dan nToPage dari struktur PRINTDLG berisi halaman awal dan akhir yang ditentukan oleh pengguna. Untuk menonaktifkan tombol radio Pages dan kontrol Dari dan Untuk mengeditnya, atur bendera PD_NOPAGENUMS . Untuk menonaktifkan tombol radio Pilihan , atur bendera PD_NOSELECTION .

Kotak dialog menyertakan kontrol edit di mana pengguna dapat mengetik jumlah salinan yang akan dicetak. Jika anggota hDevMode dari struktur PRINTDLGbukan-NULL, anggota struktur dmCopies menentukan nilai awal untuk kontrol edit ini. Jika hDevMode adalah NULL, anggota nCopies dari struktur PRINTDLG menentukan nilai awal. Saat PrintDlg kembali, nCopies biasanya menunjukkan jumlah salinan yang ditentukan oleh pengguna. Namun, jika Anda mengatur bendera PD_USEDEVMODECOPIESANDCOLLATE saat membuat kotak dialog, nCopies selalu diatur ke 1 saat dikembalikan dan anggota dmCopiesDEVMODE menunjukkan jumlah salinan yang akan dicetak.

Kotak centang Susun menunjukkan apakah pengguna ingin menyusun halaman jika beberapa salinan sedang dicetak. Bendera PD_COLLATE diatur jika kotak centang Susun dipilih. Jika aplikasi Anda tidak mendukung beberapa salinan atau kolase simulasi, atur bendera PD_USEDEVMODECOPIESANDCOLLATE di anggota Bendera struktur PRINTDLG . Ini menonaktifkan kotak centang Susun dan kontrol edit Jumlah Salinan kecuali driver printer mendukung beberapa salinan dan kolaborasi.

Kotak centang Cetak Ke File menunjukkan apakah pengguna ingin mengirim output ke file daripada ke printer. Anda dapat mengatur bendera PD_PRINTTOFILE sehingga kotak centang awalnya dipilih. Untuk menyembunyikan kotak centang, atur bendera PD_HIDEPRINTTOFILE . Untuk menonaktifkannya, atur bendera PD_DISABLEPRINTTOFILE . Jika pengguna memilih opsi Cetak Ke File , PrintDlg mengatur bendera PD_PRINTTOFILE dan mengembalikan "FILE:" pada offset yang ditunjukkan oleh anggota wOutputOffset dari struktur DEVNAMES . Saat Anda memanggil fungsi untuk memulai operasi pencetakan, tentukan string "FILE:" ini di anggota lpszOutput dari struktur. Menentukan string ini menyebabkan subsistem cetak mengkueri pengguna untuk nama file output.

Secara default, kotak dialog Cetak awalnya menampilkan informasi tentang printer default saat ini. Untuk menampilkan informasi untuk printer lain yang diinstal, inisialisasi struktur dan DEVNAMES dan tetapkan handel memori global ke struktur ke anggota hDevMode dan hDevNames . Nama perangkat yang Anda tentukan di anggota dmDeviceName dari struktur DEVMODE dan di anggota wDriverOffset struktur DEVNAMES harus mengidentifikasi perangkat printer yang juga tercantum di bagian [Perangkat] dari file Win.ini. Jika perangkat tidak tercantum, PrintDlg mengembalikan kesalahan.

Anda dapat mengarahkan PrintDlg untuk membuat konteks perangkat atau konteks informasi untuk printer dengan mengatur bendera PD_RETURNDC atau PD_RETURNIC di anggota Bendera struktur PRINTDLG . Fungsi mengembalikan handel ke konteks perangkat atau konteks informasi di anggota hDC . Jika Anda menggunakan bendera PD_RETURNDC , Anda dapat menggunakan konteks perangkat untuk menghasilkan output untuk printer.

Untuk mengambil informasi tentang printer default tanpa menampilkan kotak dialog Cetak , atur bendera PD_RETURNDEFAULT . Dalam hal ini, PrintDlg kembali segera setelah mengatur anggota hDevMode dan hDevNames untuk menangani struktur yang berisi informasi.

Secara default, PrintDlg menampilkan kotak pesan saat terjadi kesalahan. Misalnya, fungsi menampilkan pesan kesalahan jika tidak ada printer yang diinstal. Untuk mencegah fungsi menampilkan pesan peringatan ini, atur bendera PD_NOWARNING .

Topik berikut dibahas di bagian ini.

Mengkustomisasi Kotak Dialog Cetak

Anda dapat menyediakan templat kustom untuk kotak dialog Cetak , misalnya, jika Anda ingin menyertakan kontrol tambahan yang unik untuk aplikasi Anda. Fungsi PrintDlg menggunakan templat kustom Anda sebagai pengganti templat default.

Untuk menyediakan templat kustom untuk kotak dialog Cetak :

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

      -Atau-

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

Anda dapat menyediakan prosedur hook PrintHookProc untuk kotak dialog Cetak . Prosedur kait dapat memproses pesan yang dikirim ke kotak dialog. Ini juga dapat mengirim pesan ke kotak dialog. Jika Anda menggunakan templat kustom untuk menentukan kontrol tambahan, Anda harus menyediakan prosedur kait untuk memproses input untuk kontrol Anda.

Untuk mengaktifkan prosedur kait untuk kotak dialog Cetak :

  1. Atur bendera PD_ENABLEPRINTHOOK di anggota Bendera struktur PRINTDLG .
  2. Tentukan alamat prosedur kait di anggota lpfnPrintHook .

Setelah memproses pesan WM_INITDIALOG , prosedur kotak dialog mengirimkan pesan WM_INITDIALOG ke prosedur kait. Parameter lParam dari pesan ini adalah penunjuk ke struktur PRINTDLG yang digunakan untuk menginisialisasi kotak dialog.

Anda dapat membuat dan menampilkan kotak dialog Penyetelan Cetak dengan mengatur bendera PD_PRINTSETUP dalam panggilan ke fungsi PrintDlg . Namun, kotak dialog Penyetelan Cetak telah digantikan oleh kotak dialog Penyetelan Halaman dan tidak boleh digunakan dalam aplikasi baru.

Bendera berikut ini hanya berlaku untuk kotak dialog Penyetelan Cetak :

  • PD_ENABLESETUPHOOK
  • PD_ENABLESETUPTEMPLATE
  • PD_ENABLESETUPTEMPLATEHANDLE