Bagikan melalui


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
PD_ALLPAGES
0x00000000
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.
PD_COLLATE
0x00000010
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.

PD_DISABLEPRINTTOFILE
0x00080000
Menonaktifkan kotak centang Cetak ke File .
PD_ENABLEPRINTHOOK
0x00001000
Mengaktifkan prosedur kait yang ditentukan dalam anggota lpfnPrintHook . Ini memungkinkan prosedur kait untuk kotak dialog Cetak .
PD_ENABLEPRINTTEMPLATE
0x00004000
Menunjukkan bahwa anggota hInstance dan lpPrintTemplateName menentukan pengganti templat kotak dialog Cetak default.
PD_ENABLEPRINTTEMPLATEHANDLE
0x00010000
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.
PD_ENABLESETUPHOOK
0x00002000
Mengaktifkan prosedur kait yang ditentukan dalam anggota lpfnSetupHook . Ini memungkinkan prosedur kait untuk kotak dialog Penyetelan Cetak .
PD_ENABLESETUPTEMPLATE
0x00008000
Menunjukkan bahwa anggota hInstance dan lpSetupTemplateName menentukan pengganti templat kotak dialog Penyetelan Cetak default.
PD_ENABLESETUPTEMPLATEHANDLE
0x00020000
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.
PD_HIDEPRINTTOFILE
0x00100000
Sembunyikan kotak centang Cetak ke File .
PD_NONETWORKBUTTON
0x00200000
Menyembunyikan dan menonaktifkan tombol Jaringan .
PD_NOPAGENUMS
0x00000008
Menonaktifkan tombol radio Pages dan kontrol edit terkait. Selain itu, ini menyebabkan kotak centang Susun muncul dalam dialog.
PD_NOSELECTION
0x00000004
Menonaktifkan tombol radio Pilihan .
PD_NOWARNING
0x00000080
Mencegah pesan peringatan ditampilkan ketika tidak ada pencetak default.
PD_PAGENUMS
0x00000002
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.
PD_PRINTSETUP
0x00000040
Menyebabkan sistem menampilkan kotak dialog Penyetelan Cetak daripada kotak dialog Cetak .
PD_PRINTTOFILE
0x00000020
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.
PD_RETURNDC
0x00000100
Menyebabkan PrintDlg mengembalikan konteks perangkat yang cocok dengan pilihan yang dibuat pengguna dalam kotak dialog. Konteks perangkat dikembalikan dalam hDC.
PD_RETURNDEFAULT
0x00000400
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.
PD_RETURNIC
0x00000200
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.
PD_SELECTION
0x00000001
Jika bendera ini diatur, tombol radio Pilihan dipilih. Jika tidak PD_PAGENUMS atau PD_SELECTION diatur , tombol Semua radio dipilih.
PD_SHOWHELP
0x00000800
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 .
PD_USEDEVMODECOPIES
0x00040000
Sama seperti PD_USEDEVMODECOPIESANDCOLLATE.
PD_USEDEVMODECOPIESANDCOLLATE
0x00040000
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

Pustaka Kotak Dialog Umum

Konseptual

DEVMODE

DEVNAMES

PrintDlg

Referensi

WM_INITDIALOG