Bagikan melalui


Kotak Dialog untuk 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 Sheet 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 setelah halaman Umum.

Anda membuat dan menampilkan kotak dialog Cetak dengan menginisialisasi strukturPRINTDLG dan meneruskan struktur ke fungsiprintDlg.

Ilustrasi berikut ini memperlihatkan kotak dialog Cetak umum.

kotak dialog cetak

Jika pengguna mengklik tombol OK, PrintDlg mengembalikan TRUE dan menggunakan strukturPRINTDLGuntuk mengembalikan informasi tentang pilihan pengguna. Misalnya, anggota hDevMode dan hDevNames biasanya mengembalikan handle memori global untuk 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 fungsiCommDlgExtendedError untuk mengambil nilai kesalahan yang diperluas.

Kotak dialog Cetak menyertakan grup tombol radio Rentang Cetak yang menunjukkan apakah pengguna ingin mencetak semua halaman, rentang halaman, atau hanya teks yang dipilih. Sebelum memanggilPrintDlg , Anda dapat mengatur salah satu bendera PD_ALLPAGES, PD_SELECTION, atau PD_PAGENUMS untuk menunjukkan tombol mana yang awalnya dipilih. Saat 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 Halaman dan kontrol edit terkait Dari dan Ke, atur bendera PD_NOPAGENUMS. Untuk menonaktifkan tombol radio Pilihan , atur flag PD_NOSELECTION.

Kotak dialog menyertakan kontrol edit di mana pengguna dapat mengetik jumlah salinan yang akan dicetak. Jika hDevMode merupakan anggota struktur PRINTDLG yang non-NULL, maka dmCopies sebagai anggota struktur tersebut menentukan nilai awal untuk kontrol pengeditan ini. Jika hDevModeNULL, 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 menjadi 1 ketika kembali dan elemen dmCopies dari DEVMODE menunjukkan jumlah salinan yang akan dicetak.

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

Kotak centang Cetak ke File menunjukkan apakah pengguna ingin mengirim output ke file daripada ke printer. Anda dapat mengatur parameter PD_PRINTTOFILE sehingga kotak centang awalnya dipilih. Untuk menyembunyikan kotak centang, atur bendera PD_HIDEPRINTTOFILE. Untuk menonaktifkannya, atur flag 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 lpszOutput elemen 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 terinstal, inisialisasi dan struktur DEVNAMES dan tetapkan handel memori global ke struktur ke hDevMode dan hDevNames anggota. Nama perangkat yang Anda tentukan dalam anggota dmDeviceName dari struktur DEVMODE dan dalam anggota wDriverOffset dari struktur DEVNAMES harus mengidentifikasi perangkat printer yang juga tercantum di bagian [Devices] 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 menyetel flag PD_RETURNDC atau PD_RETURNIC pada anggota Flags dari struktur PRINTDLG. Fungsi mengembalikan handle ke konteks perangkat atau konteks informasi dalam elemen hDC. Jika Anda menggunakan flag PD_RETURNDC, Anda dapat menggunakan konteks perangkat untuk menghasilkan output ke printer.

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

Secara default, PrintDlg menampilkan kotak pesan saat kesalahan terjadi. 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. FungsiPrintDlg 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. Identifier kontrol yang digunakan dalam dialog templat cetak default ditentukan dalam file Dlgs.h.
  2. Gunakan strukturPRINTDLG 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 hInstance dan lpPrintTemplateName anggota 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 hook untuk memproses masukan untuk kontrol tersebut.

Untuk mengaktifkan prosedur kait untuk kotak dialog Cetak:

  1. Atur flag PD_ENABLEPRINTHOOK di Flags anggota struktur PRINTDLG.
  2. Tentukan alamat prosedur hook di lpfnPrintHook elemen.

Setelah memproses pesan WM_INITDIALOG, prosedur kotak dialog mengirimkan pesan WM_INITDIALOG ke prosedur kait. Parameter lParam dari pesan ini adalah penunjuk ke strukturPRINTDLG 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