Struktur PRINTDLGA (commdlg.h)
Berisi informasi yang digunakan fungsi PrintDlg untuk menginisialisasi Kotak Dialog Cetak. Setelah pengguna menutup kotak dialog, sistem menggunakan struktur ini untuk mengembalikan informasi tentang pilihan pengguna.
Sintaks
typedef struct tagPDA {
DWORD lStructSize;
HWND hwndOwner;
HGLOBAL hDevMode;
HGLOBAL hDevNames;
HDC hDC;
DWORD Flags;
WORD nFromPage;
WORD nToPage;
WORD nMinPage;
WORD nMaxPage;
WORD nCopies;
HINSTANCE hInstance;
LPARAM lCustData;
LPPRINTHOOKPROC lpfnPrintHook;
LPSETUPHOOKPROC lpfnSetupHook;
LPCSTR lpPrintTemplateName;
LPCSTR lpSetupTemplateName;
HGLOBAL hPrintTemplate;
HGLOBAL hSetupTemplate;
} PRINTDLGA, *LPPRINTDLGA;
Anggota
lStructSize
Jenis: DWORD
Ukuran struktur, dalam byte.
hwndOwner
Jenis: HWND
Handel ke jendela yang memiliki kotak dialog. Anggota ini bisa menjadi handel jendela yang valid, atau bisa NULL jika kotak dialog tidak memiliki pemilik.
hDevMode
Jenis: HGLOBAL
Handel ke objek memori global yang dapat dipindah yang berisi struktur DEVMODE . Jika hDevMode bukan NULL pada input, Anda harus mengalokasikan blok memori yang dapat dipindahkan untuk struktur DEVMODE dan menginisialisasi anggotanya. Fungsi PrintDlg menggunakan data input untuk menginisialisasi kontrol dalam kotak dialog. Saat PrintDlg kembali, anggota DEVMODE menunjukkan input pengguna.
Jika hDevMode adalah NULL pada input, PrintDlg mengalokasikan memori untuk struktur DEVMODE , menginisialisasi anggotanya untuk menunjukkan input pengguna, dan mengembalikan handel yang mengidentifikasinya.
Jika pengandar perangkat untuk pencetak yang ditentukan tidak mendukung mode perangkat yang diperluas, hDevMode adalah NULL ketika PrintDlg kembali.
Jika nama perangkat (ditentukan oleh anggota dmDeviceName dari struktur DEVMODE ) tidak muncul di bagian [perangkat] dari WIN.INI, PrintDlg mengembalikan kesalahan.
Untuk informasi selengkapnya tentang anggota hDevMode dan hDevNames , lihat bagian Keterangan di akhir topik ini.
hDevNames
Jenis: HGLOBAL
Handel ke objek memori global yang dapat di-movable yang berisi struktur DEVNAMES . Jika hDevNames bukan NULL pada input, Anda harus mengalokasikan blok memori yang dapat dipindahkan untuk struktur DEVNAMES dan menginisialisasi anggotanya. Fungsi PrintDlg menggunakan data input untuk menginisialisasi kontrol dalam kotak dialog. Ketika PrintDlg kembali, anggota DEVNAMES berisi informasi untuk printer yang dipilih oleh pengguna. Anda dapat menggunakan informasi ini untuk membuat konteks perangkat atau konteks informasi.
Anggota hDevNames dapat berupa NULL, dalam hal ini, PrintDlg mengalokasikan memori untuk struktur DEVNAMES , menginisialisasi anggotanya untuk menunjukkan input pengguna, dan mengembalikan handel yang mengidentifikasinya.
Untuk informasi selengkapnya tentang anggota hDevMode dan hDevNames , lihat bagian Keterangan di akhir topik ini.
hDC
Jenis: HDC
Handel ke konteks perangkat atau konteks informasi, tergantung pada apakah anggota Bendera menentukan benderaPD_RETURNDC atau PC_RETURNIC . Jika tidak ada bendera yang ditentukan, nilai anggota ini tidak ditentukan. Jika kedua bendera ditentukan, PD_RETURNDC memiliki prioritas.
Flags
Jenis: DWORD
Menginisialisasi kotak dialog Cetak . Saat kotak dialog kembali, kotak dialog mengatur bendera ini untuk menunjukkan input pengguna. Anggota ini bisa menjadi satu atau beberapa nilai berikut.
Nilai | Makna |
---|---|
|
Bendera default yang menunjukkan bahwa tombol radio Semua awalnya dipilih. Bendera ini digunakan sebagai tempat penampung untuk menunjukkan bahwa bendera PD_PAGENUMS dan PD_SELECTION tidak ditentukan. |
|
Jika bendera ini diatur, kotak centang Kolase dipilih.
Jika bendera ini diatur ketika fungsi PrintDlg kembali, aplikasi harus mensimulasikan kolase beberapa salinan. Untuk informasi selengkapnya, lihat deskripsi bendera PD_USEDEVMODECOPIESANDCOLLATE . Lihat PD_NOPAGENUMS. |
|
Menonaktifkan kotak centang Cetak ke File . |
|
Mengaktifkan prosedur kait yang ditentukan dalam anggota lpfnPrintHook . Ini memungkinkan prosedur kait untuk kotak dialog Cetak . |
|
Menunjukkan bahwa anggota hInstance dan lpPrintTemplateName menentukan pengganti templat kotak dialog Cetak default. |
|
Menunjukkan bahwa anggota hPrintTemplate mengidentifikasi blok data yang berisi templat kotak dialog yang dimuat sebelumnya. Templat ini menggantikan templat default untuk kotak dialog Cetak . Sistem mengabaikan anggota lpPrintTemplateName jika bendera ini ditentukan. |
|
Mengaktifkan prosedur kait yang ditentukan dalam anggota lpfnSetupHook . Ini memungkinkan prosedur kait untuk kotak dialog Penyetelan Cetak . |
|
Menunjukkan bahwa anggota hInstance dan lpSetupTemplateName menentukan pengganti templat kotak dialog Penyetelan Cetak default. |
|
Menunjukkan bahwa anggota hSetupTemplate mengidentifikasi blok data yang berisi templat kotak dialog yang dimuat sebelumnya. Templat ini menggantikan templat default untuk kotak dialog Penyetelan Cetak . Sistem mengabaikan anggota lpSetupTemplateName jika bendera ini ditentukan. |
|
Sembunyikan kotak centang Cetak ke File . |
|
Menyembunyikan dan menonaktifkan tombol Jaringan . |
|
Menonaktifkan tombol radio Pages dan kontrol edit terkait. Selain itu, ini menyebabkan kotak centang Susun muncul dalam dialog. |
|
Menonaktifkan tombol radio Pilihan . |
|
Mencegah pesan peringatan ditampilkan ketika tidak ada pencetak default. |
|
Jika bendera ini diatur, tombol radio Pages dipilih. Jika bendera ini diatur ketika fungsi PrintDlg kembali, anggota nFromPage dan nToPage menunjukkan halaman awal dan akhir yang ditentukan oleh pengguna. |
|
Menyebabkan sistem menampilkan kotak dialog Penyetelan Cetak daripada kotak dialog Cetak . |
|
Jika bendera ini diatur, kotak centang Cetak ke File dipilih. Jika bendera ini diatur ketika fungsi PrintDlg kembali, offset yang ditunjukkan oleh anggota wOutputOffset dari struktur DEVNAMES berisi string "FILE:". Ketika Anda memanggil fungsi StartDoc untuk memulai operasi pencetakan, tentukan string "FILE:" ini di anggota lpszOutput dari struktur DOCINFO . Menentukan string ini menyebabkan subsistem cetak mengkueri pengguna untuk nama file output. |
|
Menyebabkan PrintDlg mengembalikan konteks perangkat yang cocok dengan pilihan yang dibuat pengguna dalam kotak dialog. Konteks perangkat dikembalikan dalam hDC. |
|
Jika bendera ini diatur, fungsi PrintDlg tidak menampilkan kotak dialog. Sebaliknya, ini mengatur anggota hDevNames dan hDevMode untuk ditangani ke struktur DEVMODE dan DEVNAMES yang diinisialisasi untuk printer default sistem. hDevNames dan hDevMode harus NULL, atau PrintDlg mengembalikan kesalahan. |
|
Mirip dengan bendera PD_RETURNDC , kecuali bendera ini mengembalikan konteks informasi daripada konteks perangkat. Jika tidak ada PD_RETURNDC atau PD_RETURNIC yang ditentukan, hDC tidak ditentukan pada output. |
|
Jika bendera ini diatur, tombol radio Pilihan dipilih. Jika tidak PD_PAGENUMS atau PD_SELECTION diatur , tombol Semua radio dipilih. |
|
Menyebabkan kotak dialog menampilkan tombol Bantuan . Anggota hwndOwner harus menentukan jendela untuk menerima pesan terdaftar HELPMSGSTRING yang dikirim kotak dialog saat pengguna mengklik tombol Bantuan . |
|
Sama seperti PD_USEDEVMODECOPIESANDCOLLATE. |
|
Bendera ini menunjukkan apakah aplikasi Anda mendukung beberapa salinan dan kolajeasi. Atur bendera ini pada input untuk menunjukkan bahwa aplikasi Anda tidak mendukung beberapa salinan dan kolase. Dalam hal ini, anggota nCopies dari struktur PRINTDLG selalu mengembalikan 1, dan PD_COLLATE tidak pernah diatur dalam anggota Bendera .
Jika bendera ini tidak diatur, aplikasi bertanggung jawab untuk mencetak dan menyusun beberapa salinan. Dalam hal ini, anggota nCopies dari struktur PRINTDLG menunjukkan jumlah salinan yang ingin dicetak pengguna, dan bendera PD_COLLATE di anggota Bendera menunjukkan apakah pengguna menginginkan kolaset. Terlepas dari apakah bendera ini diatur, aplikasi dapat menentukan dari nCopies dan PD_COLLATE berapa banyak salinan yang akan dirender dan apakah akan mencetaknya disatukan. Jika bendera ini disetel dan pengandar pencetak tidak mendukung beberapa salinan, kontrol edit Salinan dinonaktifkan. Demikian pula, jika bendera ini diatur dan driver printer tidak mendukung kolase, kotak centang Susun dinonaktifkan. Anggota dmCopies dan dmCollate dari struktur DEVMODE berisi salinan dan menyusun informasi yang digunakan oleh driver printer. Jika bendera ini diatur dan driver printer mendukung beberapa salinan, anggota dmCopies menunjukkan jumlah salinan yang diminta oleh pengguna. Jika bendera ini diatur dan driver printer mendukung kolase, anggota dmCollate dari struktur DEVMODE menunjukkan apakah pengguna menginginkan kolase. Jika bendera ini tidak diatur, anggota dmCopies selalu mengembalikan 1, dan anggota dmCollate selalu nol. Masalah umum pada Windows 2000/XP/2003: Jika bendera ini tidak diatur sebelum memanggil PrintDlg, PrintDlg mungkin menukar nilai nCopies dan dmCopies saat kembali. Solusi untuk masalah ini adalah menggunakan dmCopies jika nilainya lebih besar dari 1, atau, gunakan nCopies, agar Anda mendapatkan jumlah salinan aktual yang akan dicetak saat PrintDlg kembali. |
Untuk memastikan bahwa PrintDlg atau PrintDlgEx mengembalikan nilai yang benar di anggota dmCopies dan dmCollate dari struktur DEVMODE , atur PD_RETURNDC = TRUE dan PD_USEDEVMODECOPIESANDCOLLATE = TRUE. Dengan demikian, anggota nCopies dari struktur PRINTDLG selalu 1 dan PD_COLLATE selalu FALSE.
Untuk memastikan bahwa PrintDlg atau PrintDlgEx mengembalikan nilai yang benar di nCopies dan PD_COLLATE, atur PD_RETURNDC = TRUE dan PD_USEDEVMODECOPIESANDCOLLATE = FALSE. Dengan demikian, dmCopies selalu 1 dan dmCollate selalu FALSE.
Pada Windows Vista dan Windows 7, ketika Anda memanggil PrintDlg atau PrintDlgEx dengan PD_RETURNDC diatur ke TRUE dan PD_USEDEVMODECOPIESANDCOLLATE diatur ke FALSE, fungsi PrintDlg atau PrintDlgEx mengatur jumlah salinan di anggota nCopies dari struktur PRINTDLG , dan mengatur jumlah salinan dalam struktur yang diwakili oleh anggota hDC dari struktur PRINTDLG .
Saat melakukan panggilan ke GDI, Anda harus mengabaikan nilai nCopies, mempertimbangkan nilai sebagai 1, dan menggunakan hDC yang dikembalikan untuk menghindari pencetakan salinan duplikat.
nFromPage
Jenis: WORD
Nilai awal untuk kontrol edit halaman awal.
Ketika PrintDlg kembali, nFromPage adalah halaman awal yang ditentukan oleh pengguna. Jika tombol radio Pages dipilih saat pengguna mengklik tombol Oke , PrintDlg mengatur bendera PD_PAGENUMS dan tidak kembali hingga pengguna memasukkan nilai halaman awal yang berada dalam rentang halaman minimum hingga maksimum.
Jika nilai input untuk nFromPage atau nToPage berada di luar rentang minimum/maksimum, PrintDlg mengembalikan kesalahan hanya jika bendera PD_PAGENUMS ditentukan; jika tidak, kotak dialog akan ditampilkan tetapi mengubah nilai di luar rentang menjadi nilai minimum atau maksimum.
nToPage
Jenis: WORD
Nilai awal untuk kontrol edit halaman akhir. Saat PrintDlg kembali, nToPage adalah halaman akhir yang ditentukan oleh pengguna. Jika tombol radio Pages dipilih saat penggunaan mengklik tombol Oke , PrintDlg mengatur bendera PD_PAGENUMS dan tidak kembali hingga pengguna memasukkan nilai halaman akhir yang berada dalam rentang halaman minimum hingga maksimum.
nMinPage
Jenis: WORD
Nilai minimum untuk rentang halaman yang ditentukan dalam kontrol edit halaman Dari dan Ke . Jika nMinPage sama dengan nMaxPage, tombol radio Pages dan kontrol edit halaman awal dan akhir dinonaktifkan.
nMaxPage
Jenis: WORD
Nilai maksimum untuk rentang halaman yang ditentukan dalam kontrol edit halaman Dari dan Ke .
nCopies
Jenis: WORD
Jumlah awal salinan untuk kontrol edit Salinan jika hDevMode adalah NULL; jika tidak, anggota dmCopies dari struktur DEVMODE berisi nilai awal. Ketika PrintDlg kembali, nCopies berisi jumlah salinan aktual yang akan dicetak. Nilai ini tergantung pada apakah aplikasi atau pengandar pencetak bertanggung jawab untuk mencetak beberapa salinan. Jika bendera PD_USEDEVMODECOPIESANDCOLLATE diatur di anggota Bendera , nCopies selalu 1 saat kembali, dan driver printer bertanggung jawab untuk mencetak beberapa salinan. Jika bendera tidak diatur, aplikasi bertanggung jawab untuk mencetak jumlah salinan yang ditentukan oleh nCopies. Untuk informasi selengkapnya, lihat deskripsi bendera PD_USEDEVMODECOPIESANDCOLLATE .
hInstance
Jenis: HINSTANCE
Jika bendera PD_ENABLEPRINTTEMPLATE atau PD_ENABLESETUPTEMPLATE diatur di anggota Bendera , hInstance adalah handel ke aplikasi atau instans modul yang berisi templat kotak dialog yang dinamai oleh anggota lpPrintTemplateName atau lpSetupTemplateName .
lCustData
Jenis: LPARAM
Data yang ditentukan aplikasi yang diteruskan sistem ke prosedur kait yang diidentifikasi oleh anggota lpfnPrintHook atau lpfnSetupHook . Ketika sistem mengirim pesan WM_INITDIALOG ke prosedur kait, parameter lParam pesan adalah penunjuk ke struktur PRINTDLG yang ditentukan ketika dialog dibuat. Prosedur kait dapat menggunakan pointer ini untuk mendapatkan nilai lCustData .
lpfnPrintHook
Jenis: LPPRINTHOOKPROC
Penunjuk ke prosedur hook PrintHookProc yang dapat memproses pesan yang ditujukan untuk kotak dialog Cetak . Anggota ini diabaikan kecuali bendera PD_ENABLEPRINTHOOK diatur di anggota Bendera .
lpfnSetupHook
Jenis: LPSETUPHOOKPROC
Penunjuk ke prosedur hook SetupHookProc yang dapat memproses pesan yang ditujukan untuk kotak dialog Penyetelan Cetak . Anggota ini diabaikan kecuali bendera PD_ENABLESETUPHOOK diatur dalam anggota Bendera .
lpPrintTemplateName
Jenis: LPCTSTR
Nama sumber daya templat kotak dialog dalam modul yang diidentifikasi oleh anggota hInstance . Templat ini menggantikan templat kotak dialog Cetak default. Anggota ini diabaikan kecuali bendera PD_ENABLEPRINTTEMPLATE diatur di anggota Bendera .
lpSetupTemplateName
Jenis: LPCTSTR
Nama sumber daya templat kotak dialog dalam modul yang diidentifikasi oleh anggota hInstance . Templat ini menggantikan templat kotak dialog Penyetelan Cetak default. Anggota ini diabaikan kecuali bendera PD_ENABLESETUPTEMPLATE diatur dalam anggota Bendera .
hPrintTemplate
Jenis: HGLOBAL
Jika bendera PD_ENABLEPRINTTEMPLATEHANDLE diatur di anggota Bendera , hPrintTemplate adalah handel ke objek memori yang berisi templat kotak dialog. Templat ini menggantikan templat kotak dialog Cetak default.
hSetupTemplate
Jenis: HGLOBAL
Jika bendera PD_ENABLESETUPTEMPLATEHANDLE diatur di anggota Bendera , hSetupTemplate adalah handel ke objek memori yang berisi templat kotak dialog. Templat ini menggantikan templat kotak dialog Penyetelan Cetak default.
Keterangan
Jika hDevMode dan hDevNamesNULL, PrintDlg menginisialisasi kotak dialog menggunakan printer default saat ini. Untuk menginisialisasi kotak dialog untuk printer lain, gunakan anggota wDeviceOffset dari struktur DEVNAMES untuk menentukan nama printer.
Perhatikan bahwa anggota dmDeviceName dari struktur DEVMODE juga menentukan nama printer. Namun, dmDeviceName dibatasi hingga 32 karakter, dan nama wDeviceOffset tidak. Jika nama wDeviceOffset dan dmDeviceName tidak sama, PrintDlg menginisialisasi kotak dialog menggunakan printer yang ditentukan oleh wDeviceOffset.
Jika bendera PD_RETURNDEFAULT diatur dan hDevMode dan hDevNamesADALAH NULL, PrintDlg menggunakan anggota hDevNames dan hDevMode untuk mengembalikan informasi tentang printer default saat ini tanpa menampilkan kotak dialog.
Catatan
Header commdlg.h mendefinisikan PRINTDLG sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Header | commdlg.h (sertakan Windows.h) |
Lihat juga
Konseptual
Referensi