CPrintDialog
Kelas
Merangkum layanan yang disediakan oleh kotak dialog umum Windows untuk pencetakan.
Sintaks
class CPrintDialog : public CCommonDialog
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CPrintDialog::CPrintDialog |
Membuat CPrintDialog objek. |
Metode Publik
Nama | Deskripsi |
---|---|
CPrintDialog::CreatePrinterDC |
Membuat konteks perangkat printer tanpa menampilkan kotak dialog Cetak. |
CPrintDialog::DoModal |
Menampilkan kotak dialog dan memperbolehkan pengguna membuat pilihan. |
CPrintDialog::GetCopies |
Mengambil jumlah salinan yang diminta. |
CPrintDialog::GetDefaults |
Mengambil default perangkat tanpa menampilkan kotak dialog. |
CPrintDialog::GetDeviceName |
Mengambil nama perangkat pencetak yang saat ini dipilih. |
CPrintDialog::GetDevMode |
Mengambil DEVMODE struktur. |
CPrintDialog::GetDriverName |
Mengambil nama pengandar pencetak yang saat ini dipilih. |
CPrintDialog::GetFromPage |
Mengambil halaman awal rentang cetak. |
CPrintDialog::GetPortName |
Mengambil nama porta pencetak yang saat ini dipilih. |
CPrintDialog::GetPrinterDC |
Mengambil handel ke konteks perangkat printer. |
CPrintDialog::GetToPage |
Mengambil halaman akhir rentang cetak. |
CPrintDialog::PrintAll |
Menentukan apakah akan mencetak semua halaman dokumen. |
CPrintDialog::PrintCollate |
Menentukan apakah salinan yang disusun diminta. |
CPrintDialog::PrintRange |
Menentukan apakah hanya mencetak rentang halaman tertentu. |
CPrintDialog::PrintSelection |
Menentukan apakah hanya mencetak item terpilih saat ini. |
Anggota Data Publik
Nama | Deskripsi |
---|---|
CPrintDialog::m_pd |
Struktur yang CPrintDialog digunakan untuk menyesuaikan objek. |
Keterangan
Kotak dialog cetak umum menyediakan cara mudah untuk mengimplementasikan kotak dialog Penyetelan Cetak dan Cetak dengan cara yang konsisten dengan standar Windows.
Catatan
Kelas CPrintDialogEx
merangkum layanan yang disediakan oleh lembar properti Windows Print. Untuk informasi selengkapnya, lihat CPrintDialogEx
gambaran umum.
CPrintDialog
Fungsionalitas digantikan oleh CPageSetupDialog
, yang dirancang untuk memberi Anda kotak dialog umum untuk penyiapan cetak dan penyiapan halaman.
Anda dapat mengandalkan kerangka kerja untuk menangani banyak aspek proses pencetakan untuk aplikasi Anda. Dalam hal ini, kerangka kerja secara otomatis menampilkan kotak dialog umum Windows untuk pencetakan. Anda juga dapat memiliki kerangka kerja menangani pencetakan untuk aplikasi Anda tetapi mengambil alih kotak dialog Cetak umum dengan kotak dialog cetak Anda sendiri. Untuk informasi selengkapnya tentang menggunakan kerangka kerja untuk menangani tugas pencetakan, lihat artikel Mencetak.
Jika Anda ingin aplikasi Anda menangani pencetakan tanpa keterlibatan kerangka kerja, Anda dapat menggunakan CPrintDialog
kelas "apa adanya" dengan konstruktor yang disediakan, atau Anda dapat memperoleh kelas dialog Anda sendiri dari CPrintDialog
dan menulis konstruktor agar sesuai dengan kebutuhan Anda. Dalam kedua kasus, kotak dialog ini akan berperilaku seperti kotak dialog MFC standar karena berasal dari kelas CCommonDialog
.
Untuk menggunakan CPrintDialog
objek, pertama-tama buat objek menggunakan CPrintDialog
konstruktor. Setelah kotak dialog dibuat, Anda dapat mengatur atau mengubah nilai apa pun dalam m_pd
struktur untuk menginisialisasi nilai kontrol kotak dialog. Strukturnya m_pd
berjenis PRINTDLG
. Untuk informasi selengkapnya tentang struktur ini, lihat Windows SDK.
Jika Anda tidak menyediakan handel m_pd
Anda sendiri untuk hDevMode
anggota dan hDevNames
, pastikan untuk memanggil fungsi GlobalFree
Windows untuk handel ini ketika Anda selesai dengan kotak dialog. Saat menggunakan implementasi Penyiapan Cetak kerangka kerja yang disediakan oleh CWinApp::OnFilePrintSetup
, Anda tidak perlu membebaskan handel ini. Handel dipertahankan oleh CWinApp
dan dibeberkan dalam CWinApp
destruktor. Anda hanya perlu membebaskan handel ini saat menggunakan CPrintDialog
stand-alone.
Setelah menginisialisasi kontrol kotak dialog, panggil DoModal
fungsi anggota untuk menampilkan kotak dialog dan izinkan pengguna untuk memilih opsi cetak. DoModal
mengembalikan apakah pengguna memilih tombol OK (IDOK
) atau Batal (IDCANCEL
).
Jika DoModal
mengembalikan IDOK
, Anda dapat menggunakan salah CPrintDialog
satu fungsi anggota untuk mengambil input informasi oleh pengguna.
Fungsi CPrintDialog::GetDefaults
anggota berguna untuk mengambil default printer saat ini tanpa menampilkan kotak dialog. Fungsi anggota ini tidak memerlukan interaksi pengguna.
Anda dapat menggunakan fungsi Windows CommDlgExtendedError
untuk menentukan apakah terjadi kesalahan selama inisialisasi kotak dialog dan untuk mempelajari selengkapnya tentang kesalahan tersebut. Untuk informasi selengkapnya tentang fungsi ini, lihat Windows SDK.
CPrintDialog
bergantung pada COMMDLG.DLL
file yang dikirim dengan Windows versi 3.1 dan yang lebih baru.
Untuk mengkustomisasi kotak dialog, dapatkan kelas dari CPrintDialog
, sediakan templat dialog kustom, dan tambahkan peta pesan untuk memproses pesan pemberitahuan dari kontrol yang diperluas. Setiap pesan yang tidak diolah harus diteruskan ke kelas dasar. Menyesuaikan fungsi kait tidak diperlukan.
Untuk memproses pesan yang sama secara berbeda tergantung pada apakah kotak dialog adalah Cetak atau Penyetelan Cetak, Anda harus memperoleh kelas untuk setiap kotak dialog. Anda juga harus mengambil alih fungsi Windows AttachOnSetup
, yang menangani pembuatan kotak dialog baru saat tombol Penyetelan Cetak dipilih dalam kotak dialog Cetak.
Untuk informasi selengkapnya tentang menggunakan CPrintDialog
, lihat Kelas Dialog Umum.
Hierarki Warisan
CPrintDialog
Persyaratan
Header: afxdlgs.h
CPrintDialog::CPrintDialog
Membuat objek dialog Windows Print atau Print Setup.
CPrintDialog(
BOOL bPrintSetupOnly,
DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
CWnd* pParentWnd = NULL);
Parameter
bPrintSetupOnly
Menentukan apakah kotak dialog Windows Print standar atau kotak dialog Penyetelan Cetak ditampilkan. Atur parameter ini ke TRUE
untuk menampilkan kotak dialog Penyetelan Cetak Windows standar. Atur ke FALSE
untuk menampilkan kotak dialog Windows Print. Jika bPrintSetupOnly
adalah FALSE
, tombol opsi Penyetelan Cetak masih ditampilkan dalam kotak dialog Cetak.
dwFlags
Satu atau beberapa bendera yang dapat Anda gunakan untuk menyesuaikan pengaturan kotak dialog, dikombinasikan menggunakan operator OR bitwise. Misalnya, PD_ALLPAGES
bendera mengatur rentang cetak default ke semua halaman dokumen. PRINTDLG
Lihat struktur di Windows SDK untuk informasi selengkapnya tentang bendera ini.
pParentWnd
Penunjuk ke jendela induk atau pemilik kotak dialog.
Keterangan
Fungsi anggota ini hanya membuat objek. DoModal
Gunakan fungsi anggota untuk menampilkan kotak dialog.
Perhatikan bahwa saat Anda memanggil konstruktor dengan bPrintSetupOnly
diatur ke FALSE
, PD_RETURNDC
bendera secara otomatis digunakan. Setelah memanggil DoModal
, , atau GetPrinterDC
, DC printer akan dikembalikan di m_pd.hDC
GetDefaults
. DC ini harus dibebaskan dengan panggilan ke DeleteDC
oleh pemanggil .CPrintDialog
Contoh
// Display the Windows Print dialog box with "All" radio button
// initially selected. All other radio buttons are disabled.
CPrintDialog dlg1(FALSE);
// Display the Windows Print dialog box with Collate check box checked.
CPrintDialog dlg2(FALSE, PD_ALLPAGES | PD_COLLATE | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE);
// Display the Windows Print dialog box with "Selection" radio
// button initially selected. "All" radio button is enabled
// but "Pages" radio button is disabled.
CPrintDialog dlg3(FALSE, PD_SELECTION | PD_USEDEVMODECOPIES);
CPrintDialog::CreatePrinterDC
Membuat konteks perangkat printer (DC) dari DEVMODE
struktur dan DEVNAMES
.
HDC CreatePrinterDC();
Tampilkan Nilai
Tangani ke konteks perangkat printer yang baru dibuat.
Keterangan
DC ini diasumsikan sebagai DC printer saat ini, dan DC printer lain yang diperoleh sebelumnya harus dihapus oleh pengguna. Fungsi ini dapat dipanggil, dan DC yang dihasilkan digunakan, tanpa pernah menampilkan kotak dialog Cetak.
Contoh
// Display the Windows Print dialog box with "All" radio button
// initially selected. All other radio buttons are disabled.
CPrintDialog dlg(FALSE);
if (dlg.DoModal() == IDOK)
{
// Create a printer device context (DC) based on the information
// selected from the Print dialog.
HDC hdc = dlg.CreatePrinterDC();
ASSERT(hdc);
}
CPrintDialog::DoModal
Menampilkan kotak dialog cetak umum Windows dan memungkinkan pengguna memilih berbagai opsi pencetakan seperti jumlah salinan, rentang halaman, dan apakah salinan harus disatukan.
virtual INT_PTR DoModal();
Tampilkan Nilai
IDOK
atau IDCANCEL
. Jika IDCANCEL
dikembalikan, panggil fungsi Windows CommDlgExtendedError
untuk menentukan apakah terjadi kesalahan.
IDOK
dan IDCANCEL
adalah konstanta yang menunjukkan apakah pengguna memilih tombol OK atau Batal .
Keterangan
Jika Anda ingin menginisialisasi berbagai opsi dialog cetak dengan mengatur anggota m_pd
struktur, Anda harus melakukan ini sebelum memanggil DoModal
, tetapi setelah objek dialog dibangun.
Setelah memanggil DoModal
, Anda dapat memanggil fungsi anggota lain untuk mengambil pengaturan atau input informasi oleh pengguna ke dalam kotak dialog.
Perhatikan bahwa saat Anda memanggil konstruktor dengan bPrintSetupOnly
diatur ke FALSE
, PD_RETURNDC
bendera secara otomatis digunakan. Setelah memanggil DoModal
, , atau GetPrinterDC
, DC printer akan dikembalikan di m_pd.hDC
GetDefaults
. DC ini harus dibebaskan dengan panggilan ke DeleteDC
oleh pemanggil .CPrintDialog
Contoh
Lihat contoh untuk CPrintDialog::CreatePrinterDC
.
CPrintDialog::GetCopies
Mengambil jumlah salinan yang diminta.
int GetCopies() const;
Tampilkan Nilai
Jumlah salinan yang diminta.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
untuk mengambil jumlah salinan yang diminta.
Contoh
Lihat contoh untuk CPrintDialog::PrintCollate
.
CPrintDialog::GetDefaults
Mengambil default perangkat dari printer default tanpa menampilkan kotak dialog.
BOOL GetDefaults();
Tampilkan Nilai
Bukan nol jika fungsi berhasil; jika tidak, 0.
Keterangan
Nilai yang diambil ditempatkan dalam m_pd
struktur.
Dalam beberapa kasus, panggilan ke fungsi ini akan memanggil konstruktor untuk CPrintDialog
dengan bPrintSetupOnly
diatur ke FALSE
. Dalam kasus ini, DC printer dan hDevNames
dan hDevMode
(dua handel yang terletak di m_pd
anggota data) dialokasikan secara otomatis.
Jika konstruktor untuk CPrintDialog
dipanggil dengan bPrintSetupOnly
diatur ke FALSE
, fungsi ini tidak hanya akan kembali hDevNames
dan hDevMode
terletak di m_pd.hDevNames
dan m_pd.hDevMode
) ke pemanggil, tetapi juga akan mengembalikan DC printer di m_pd.hDC
. Pemanggil bertanggung jawab untuk menghapus DC printer dan memanggil fungsi Windows GlobalFree
pada handel ketika Anda selesai dengan CPrintDialog
objek.
Contoh
Fragmen kode ini mendapatkan konteks perangkat printer default dan melaporkan kepada pengguna resolusi printer dalam titik per inci. (Atribut kemampuan printer ini sering disebut sebagai DPI.)
CPrintDialog dlg(FALSE);
if (!dlg.GetDefaults())
{
AfxMessageBox(_T("You have no default printer!"));
}
else
{
// attach to the DC we were given
CDC dc;
dc.Attach(dlg.m_pd.hDC);
// ask for the measurements
int nHorz = dc.GetDeviceCaps(LOGPIXELSX);
int nVert = dc.GetDeviceCaps(LOGPIXELSY);
// almost always the same in both directions, but sometimes not!
CString str;
if (nHorz == nVert)
{
str.Format(_T("Your printer supports %d pixels per inch"), nHorz);
}
else
{
str.Format(_T("Your printer supports %d pixels per inch ")
_T("horizontal resolution, and %d pixels per inch vertical ")
_T("resolution"), nHorz, nVert);
}
// tell the user
AfxMessageBox(str);
// Note: no need to call Detach() because we want the CDC destructor
// to call FreeDC() on the DC we borrowed from the common dialog
}
CPrintDialog::GetDeviceName
Mengambil nama perangkat pencetak yang saat ini dipilih.
CString GetDeviceName() const;
Tampilkan Nilai
Nama pencetak terpilih saat ini.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
untuk mengambil nama printer yang saat ini dipilih, atau setelah memanggil GetDefaults
untuk mengambil default perangkat saat ini dari printer default. Gunakan penunjuk ke objek yang CString
dikembalikan oleh GetDeviceName
sebagai nilai lpszDeviceName
dalam panggilan ke CDC::CreateDC
.
Contoh
Fragmen kode ini menunjukkan nama printer default pengguna dan port yang tersambung dengannya, bersama dengan nama penampung yang digunakan printer. Kode mungkin menampilkan kotak pesan yang mengatakan, "Printer default Anda adalah HP LaserJet IIIP di \\server\share menggunakan winspool.", misalnya.
CPrintDialog dlg(FALSE);
if (!dlg.GetDefaults())
{
AfxMessageBox(_T("You have no default printer!"));
}
else
{
CString strDescription;
strDescription.Format(_T("Your default printer is %s on %s using %s."),
(LPCTSTR)dlg.GetDeviceName(),
(LPCTSTR)dlg.GetPortName(),
(LPCTSTR)dlg.GetDriverName());
AfxMessageBox(strDescription);
}
CPrintDialog::GetDevMode
Mengambil DEVMODE
struktur.
LPDEVMODE GetDevMode() const;
Tampilkan Nilai
Struktur DEVMODE
data, yang berisi informasi tentang inisialisasi perangkat dan lingkungan driver cetak. Anda harus membuka kunci memori yang diambil oleh struktur ini dengan fungsi Windows GlobalUnlock
, yang dijelaskan dalam Windows SDK.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
atau GetDefaults
untuk mengambil informasi tentang perangkat pencetakan.
Contoh
Lihat contoh untuk CPrintDialog::PrintCollate
.
CPrintDialog::GetDriverName
Mengambil nama pengandar pencetak yang saat ini dipilih.
CString GetDriverName() const;
Tampilkan Nilai
Menentukan CString
nama driver yang ditentukan sistem.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
atau GetDefaults
untuk mengambil nama driver perangkat printer yang ditentukan sistem. Gunakan penunjuk ke objek yang CString
dikembalikan oleh GetDriverName
sebagai nilai lpszDriverName
dalam panggilan ke CDC::CreateDC
.
Contoh
Lihat contoh untuk CPrintDialog::GetDeviceName
.
CPrintDialog::GetFromPage
Mengambil halaman awal rentang cetak.
int GetFromPage() const;
Tampilkan Nilai
Nomor halaman awal dalam rentang halaman yang akan dicetak.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
untuk mengambil nomor halaman awal dalam rentang halaman yang akan dicetak.
Contoh
Lihat contoh untuk CPrintDialog::m_pd
.
CPrintDialog::GetPortName
Mengambil nama porta pencetak yang saat ini dipilih.
CString GetPortName() const;
Tampilkan Nilai
Nama porta pencetak yang saat ini dipilih.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
atau GetDefaults
untuk mengambil nama port printer yang saat ini dipilih.
Contoh
Lihat contoh untuk CPrintDialog::GetDeviceName.
CPrintDialog::GetPrinterDC
Mengambil handel ke konteks perangkat printer.
HDC GetPrinterDC() const;
Tampilkan Nilai
Handel ke konteks perangkat printer jika berhasil; jika tidak NULL
.
Keterangan
bPrintSetupOnly
Jika parameter CPrintDialog
konstruktor (FALSE
menunjukkan bahwa kotak dialog Cetak ditampilkan), maka GetPrinterDC
mengembalikan handel ke konteks perangkat printer. Anda harus memanggil fungsi Windows DeleteDC
untuk menghapus konteks perangkat setelah selesai menggunakannya.
Contoh
CPrintDialog dlg(FALSE);
CPrintDialog dlg(FALSE);
if (dlg.DoModal() == IDOK)
{
// Get a handle to the printer device context (DC).
HDC hdc = dlg.GetPrinterDC();
ASSERT(hdc);
// Do something with the HDC...
// Clean up.
CDC::FromHandle(hdc)->DeleteDC();
}
CPrintDialog::GetToPage
Mengambil halaman akhir rentang cetak.
int GetToPage() const;
Tampilkan Nilai
Nomor halaman akhir dalam rentang halaman yang akan dicetak.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
untuk mengambil nomor halaman akhir dalam rentang halaman yang akan dicetak.
Contoh
Lihat contoh untuk CPrintDialog::m_pd
.
CPrintDialog::m_pd
Struktur yang anggotanya menyimpan karakteristik objek dialog.
PRINTDLG& m_pd;
Keterangan
Setelah membuat CPrintDialog
objek, Anda dapat menggunakan m_pd
untuk mengatur berbagai aspek kotak dialog sebelum memanggil DoModal
fungsi anggota. Untuk informasi selengkapnya tentang m_pd
struktur, lihat PRINTDLG
di Windows SDK.
Jika Anda memodifikasi anggota data secara m_pd
langsung, Anda akan mengambil alih perilaku default apa pun.
Contoh
// Display the Windows Print dialog box with "Pages" radio button
// initially selected. "All" and "Pages" radio buttons are
// enabled as well.
CPrintDialog dlg(FALSE, PD_PAGENUMS | PD_USEDEVMODECOPIES);
dlg.m_pd.nMinPage = dlg.m_pd.nFromPage = 1;
dlg.m_pd.nMaxPage = dlg.m_pd.nToPage = 10;
if (dlg.DoModal() == IDOK)
{
// Determine the starting and ending page numbers for the range
// of pages to be printed.
int from_page = -1, to_page = -1;
if (dlg.PrintAll()) // print all pages in the document
{
from_page = dlg.m_pd.nMinPage;
to_page = dlg.m_pd.nMaxPage;
}
else if (dlg.PrintRange()) // print only a range of pages
{ // in the document
from_page = dlg.GetFromPage();
to_page = dlg.GetToPage();
}
else if (dlg.PrintSelection()) // print only the currently selected
// items
{
from_page = to_page = -1; // -1 to denote unknown yet
}
TRACE(_T("Print from %d to %d\n"), from_page, to_page);
}
CPrintDialog::PrintAll
Menentukan apakah akan mencetak semua halaman dokumen.
BOOL PrintAll() const;
Tampilkan Nilai
Bukan nol jika semua halaman dalam dokumen akan dicetak; jika tidak, 0.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
untuk menentukan apakah akan mencetak semua halaman dalam dokumen.
Contoh
Lihat contoh untuk CPrintDialog::m_pd
.
CPrintDialog::PrintCollate
Menentukan apakah salinan yang disusun diminta.
BOOL PrintCollate() const;
Tampilkan Nilai
Bukan nol jika pengguna memilih kotak centang susun dalam kotak dialog; jika tidak, 0.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
untuk menentukan apakah printer harus menyusun semua salinan dokumen yang dicetak.
Contoh
// Display the Windows Print dialog box with Collate check box checked.
CPrintDialog dlg(FALSE, PD_ALLPAGES | PD_COLLATE | PD_NOPAGENUMS |
PD_HIDEPRINTTOFILE);
if (dlg.DoModal() == IDOK)
{
// If the collate check box is selected, then GetCopies() will return
// the number of copies printed. Otherwise, GetCopies() always
// returns 1. Then, the number of copies printed can be found from the
// DEVMODE structure of the printing device.
if (dlg.PrintCollate())
{
int num = dlg.GetCopies();
TRACE(_T("Number of copies printed = %d\n"), num);
}
else
{
LPDEVMODE devmode = dlg.GetDevMode();
TRACE(_T("Number of copies printed = %d\n"), devmode->dmCopies);
}
}
CPrintDialog::PrintRange
Menentukan apakah hanya mencetak rentang halaman tertentu.
BOOL PrintRange() const;
Tampilkan Nilai
Bukan nol jika hanya rentang halaman dalam dokumen yang akan dicetak; jika tidak, 0.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
untuk menentukan apakah hanya mencetak rentang halaman dalam dokumen.
Contoh
Lihat contoh untuk CPrintDialog::m_pd
.
CPrintDialog::PrintSelection
Menentukan apakah hanya mencetak item terpilih saat ini.
BOOL PrintSelection() const;
Tampilkan Nilai
Bukan nol jika hanya item yang dipilih yang akan dicetak; jika tidak, 0.
Keterangan
Panggil fungsi ini setelah memanggil DoModal
untuk menentukan apakah hanya mencetak item yang saat ini dipilih.
Contoh
Lihat contoh untuk CPrintDialog::m_pd
.
Lihat juga
Sampel MFC DIBLOOK
CCommonDialog
Kelas
Bagan Hierarki
CPrintInfo
Struktur