Bagikan melalui


Struktur PRINTDLGW (commdlg.h)

Berisi informasi yang digunakan fungsi printDlg untuk menginisialisasi Print Dialog Box. Setelah pengguna menutup kotak dialog, sistem menggunakan struktur ini untuk mengembalikan informasi tentang pilihan pengguna.

Sintaksis

typedef struct tagPDW {
  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;
  LPCWSTR         lpPrintTemplateName;
  LPCWSTR         lpSetupTemplateName;
  HGLOBAL         hPrintTemplate;
  HGLOBAL         hSetupTemplate;
} PRINTDLGW, *LPPRINTDLGW;

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 dapat null jika kotak dialog tidak memiliki pemilik.

hDevMode

Jenis: HGLOBAL

Handel ke objek memori global yang dapat bergerak yang berisi struktur DEVMODE . Jika hDevMode tidak 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, devmode anggota menunjukkan input pengguna.

Jika hDevMode 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 NULL ketika PrintDlg kembali.

Jika nama perangkat (ditentukan oleh dmDeviceName anggota struktur DEVMODE ) tidak muncul di bagian [perangkat] WIN. INI, PrintDlg mengembalikan kesalahan.

Untuk informasi selengkapnya tentang hDevMode dan hDevNames anggota, lihat bagian Keterangan di akhir topik ini.

hDevNames

Jenis: HGLOBAL

Handel ke objek memori global yang dapat bergerak yang berisi struktur DEVNAMES . Jika hDevNames tidak 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. Saat PrintDlg kembali, DEVNAMES anggota berisi informasi untuk printer yang dipilih oleh pengguna. Anda dapat menggunakan informasi ini untuk membuat konteks perangkat atau konteks informasi.

Anggota hDevNames dapat 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 hDevMode dan hDevNames anggota, lihat bagian Keterangan di akhir topik ini.

hDC

Jenis: HDC

Handel ke konteks perangkat atau konteks informasi, tergantung pada apakah anggota Bendera menentukan bendera PD_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 Arti
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 Susun 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 hInstance dan anggota lpPrintTemplateName menentukan pengganti templat kotak dialog Cetak default.
PD_ENABLEPRINTTEMPLATEHANDLE
0x00010000
Menunjukkan bahwa anggota hPrintTemplate mengidentifikasi blok data yang berisi templat kotak dialog yang telah 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 hInstance dan lpSetupTemplateName anggota menentukan pengganti templat kotak dialog Penyetelan Cetak default.
PD_ENABLESETUPTEMPLATEHANDLE
0x00020000
Menunjukkan bahwa anggota hSetupTemplate mengidentifikasi blok data yang berisi templat kotak dialog yang telah 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 Halaman dan kontrol edit terkait. Selain itu, kotak centang Collate 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 saat fungsi PrintDlg kembali, nFromPage dan nToPage anggota menunjukkan halaman awal dan akhir yang ditentukan oleh pengguna.
PD_PRINTSETUP
0x00000040
Menyebabkan sistem menampilkan kotak dialog Penyetelan Cetak , bukan 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 wOutputOffset anggota struktur DEVNAMES berisi string "FILE:". Saat Anda memanggil fungsi StartDoc untuk memulai operasi pencetakan, tentukan string "FILE:" ini di anggota lpszOutput 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 hDevNames dan hDevMode anggota untuk ditangani ke devmode dan DEVNAMES struktur yang diinisialisasi untuk printer default sistem. Baik 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 radio Semua dipilih.
PD_SHOWHELP
0x00000800
Menyebabkan kotak dialog menampilkan tombol Bantuan . Anggota hwndOwner harus menentukan jendela untuk menerima HELPMSGSTRING pesan terdaftar 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 kolatasi. Atur bendera ini pada input untuk menunjukkan bahwa aplikasi Anda tidak mendukung beberapa salinan dan kolase. Dalam hal ini, nCopies anggota 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, nCopies anggota struktur PRINTDLG menunjukkan jumlah salinan yang ingin dicetak pengguna, dan bendera PD_COLLATE di anggota Bendera menunjukkan apakah pengguna menginginkan kolase.

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 diatur dan pengandar pencetak tidak mendukung beberapa salinan, Salinan kontrol edit dinonaktifkan. Demikian pula, jika bendera ini diatur dan driver printer tidak mendukung kolase, kotak centang Collate dinonaktifkan.

dmCopies dan dmCollate anggota struktur DEVMODE berisi salinan dan menyusun informasi yang digunakan oleh driver printer. Jika bendera ini diatur dan driver printer mendukung beberapa salinan, dmCopies anggota menunjukkan jumlah salinan yang diminta oleh pengguna. Jika bendera ini diatur dan driver printer mendukung kolase, dmCollate anggota struktur DEVMODE menunjukkan apakah pengguna menginginkan kolase. Jika bendera ini tidak diatur, dmCopies anggota selalu mengembalikan 1, dan anggota dmCollate selalu nol.

Masalah yang diketahui pada Windows 2000/XP/2003: Jika bendera ini tidak diatur sebelum memanggil PrintDlg, PrintDlg mungkin menukar nCopies dan nilai dmCopies saat kembali. Solusi untuk masalah ini digunakan 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 dalam dmCopies dan dmCollate anggota struktur DEVMODE , atur PD_RETURNDCTRUE dan PD_USEDEVMODECOPIESANDCOLLATETRUE. Dengan demikian, nCopies anggota 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, saat Anda memanggil PrintDlg atau PrintDlgEx dengan PD_RETURNDC diatur ke TRUE dan PD_USEDEVMODECOPIESANDCOLLATE diatur ke FALSE, fungsi PrintDlg atau PrintDlgEx mengatur jumlah salinan dalam nCopies anggota 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, pertimbangkan nilai sebagai 1, dan menggunakan hDC yang dikembalikan untuk menghindari pencetakan salinan duplikat.

nFromPage

Jenis: WORD

Nilai awal untuk kontrol edit halaman awal.

Saat PrintDlg kembali, nFromPage adalah halaman awal yang ditentukan oleh pengguna. Jika tombol radio Pages dipilih saat pengguna mengklik tombol Okay, 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 menampilkan kotak dialog 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 Halaman 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 dengannMaxPage , Pages tombol radio 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 Salinan kontrol edit jika hDevMode NULL; jika tidak, dmCopies anggota struktur DEVMODE berisi nilai awal. Saat 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 dalam 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 dalam anggota Bendera , hInstance adalah handel ke instans aplikasi atau modul yang berisi templat kotak dialog yang dinamai oleh lpPrintTemplateName atau lpSetupTemplateName anggota.

lCustData

Jenis: LPARAM

Data yang ditentukan aplikasi yang diteruskan sistem ke prosedur kait yang diidentifikasi oleh lpfnPrintHook atau anggota lpfnSetupHook. Ketika sistem mengirim pesan WM_INITDIALOG ke prosedur kait, parameter lParam pesan adalah penunjuk ke struktur PRINTDLG yang ditentukan saat 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 dalam 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 hInstance anggota. Templat ini menggantikan templat kotak dialog Cetak default. Anggota ini diabaikan kecuali bendera PD_ENABLEPRINTTEMPLATE diatur dalam anggota Bendera .

lpSetupTemplateName

Jenis: LPCTSTR

Nama sumber daya templat kotak dialog dalam modul yang diidentifikasi oleh hInstance anggota. 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.

Komentar

Jika hDevMode dan hDevNames NULL, PrintDlg menginisialisasi kotak dialog menggunakan printer default saat ini. Untuk menginisialisasi kotak dialog untuk printer lain, gunakan wDeviceOffset anggota struktur DEVNAMES untuk menentukan nama printer.

Perhatikan bahwa dmDeviceName anggota 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 hDevNamesNULL, PrintDlg menggunakan hDevNames dan hDevMode anggota untuk mengembalikan informasi tentang printer default saat ini tanpa menampilkan kotak dialog.

Nota

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

Syarat Nilai
klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header commdlg.h (termasuk Windows.h)

Lihat juga

Pustaka Kotak Dialog Umum

Konseptual

DEVMODE

DEVNAMES

PrintDlg

Referensi

WM_INITDIALOG