Bagikan melalui


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.

CPrintDialogFungsionalitas 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 CWinAppdestruktor. 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 CPrintDialogsatu 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

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

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.hDCGetDefaults. 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.hDCGetDefaults. 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 (FALSEmenunjukkan 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