Share via


CPrintDialog-klasse

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Hiermee worden de services ingekapseld die worden geleverd door het algemene dialoogvenster van Windows voor afdrukken.

Syntaxis

class CPrintDialog : public CCommonDialog

Leden

Openbare constructors

Naam Description
CPrintDialog::CPrintDialog Maakt een CPrintDialog object.

Openbare methoden

Naam Description
CPrintDialog::CreatePrinterDC Hiermee maakt u een printerapparaatcontext zonder het dialoogvenster Afdrukken weer te geven.
CPrintDialog::DoModal Hiermee wordt het dialoogvenster weergegeven en kan de gebruiker een selectie maken.
CPrintDialog::GetCopies Hiermee haalt u het aantal aangevraagde exemplaren op.
CPrintDialog::GetDefaults Hiermee worden standaardinstellingen voor apparaten opgehaald zonder een dialoogvenster weer te geven.
CPrintDialog::GetDeviceName Hiermee haalt u de naam van het geselecteerde printerapparaat op.
CPrintDialog::GetDevMode Haalt de DEVMODE structuur op.
CPrintDialog::GetDriverName Hiermee haalt u de naam van het geselecteerde printerstuurprogramma op.
CPrintDialog::GetFromPage Hiermee haalt u de beginpagina van het afdrukbereik op.
CPrintDialog::GetPortName Hiermee haalt u de naam van de geselecteerde printerpoort op.
CPrintDialog::GetPrinterDC Hiermee haalt u een ingang op voor de context van het printerapparaat.
CPrintDialog::GetToPage Hiermee haalt u de eindpagina van het afdrukbereik op.
CPrintDialog::PrintAll Bepaalt of alle pagina's van het document moeten worden afgedrukt.
CPrintDialog::PrintCollate Bepaalt of gesorteerde kopieën worden aangevraagd.
CPrintDialog::PrintRange Hiermee bepaalt u of alleen een opgegeven bereik van pagina's moet worden afgedrukt.
CPrintDialog::PrintSelection Bepaalt of alleen de geselecteerde items moeten worden afgedrukt.

Leden van openbare gegevens

Naam Description
CPrintDialog::m_pd Een structuur die wordt gebruikt om een CPrintDialog object aan te passen.

Opmerkingen

Algemene dialoogvensters voor afdrukken bieden een eenvoudige manier om dialoogvensters voor afdrukken en instellen te implementeren op een manier die consistent is met de Windows-standaarden.

Opmerking

De CPrintDialogEx klasse bevat de services die worden geleverd door het eigenschappenvenster Windows Print. Zie het CPrintDialogEx overzicht voor meer informatie.

CPrintDialogDe functionaliteit wordt vervangen door die van CPageSetupDialog, die is ontworpen om u een gemeenschappelijk dialoogvenster te bieden voor zowel de afdrukinstelling als de pagina-instelling.

U kunt vertrouwen op het framework om veel aspecten van het afdrukproces voor uw toepassing af te handelen. In dit geval wordt in het framework automatisch het algemene dialoogvenster van Windows weergegeven voor afdrukken. U kunt ook de frameworkgreep voor het afdrukken voor uw toepassing hebben, maar het algemene dialoogvenster Afdrukken overschrijven met uw eigen afdrukdialoogvenster. Zie het artikel Afdrukken voor meer informatie over het gebruik van het framework voor het afhandelen van afdruktaken.

Als u wilt dat uw toepassing afdrukbewerkingen afhandelt zonder de betrokkenheid van het framework, kunt u de CPrintDialog klasse 'zoals is' gebruiken met de meegeleverde constructor, of u kunt uw eigen dialoogvensterklasse afleiden van CPrintDialog en een constructor schrijven die aan uw behoeften voldoet. In beide gevallen gedragen deze dialoogvensters zich als standaard MFC-dialoogvensters omdat ze zijn afgeleid van klasse CCommonDialog.

Als u een CPrintDialog object wilt gebruiken, maakt u eerst het object met behulp van de CPrintDialog constructor. Zodra het dialoogvenster is samengesteld, kunt u waarden in de m_pd structuur instellen of wijzigen om de waarden van de besturingselementen van het dialoogvenster te initialiseren. De m_pd structuur is van het type PRINTDLG. Zie de Windows SDK voor meer informatie over deze structuur.

Als u uw eigen ingangen voor de hDevMode en hDevNames leden niet opgeeftm_pd, moet u de Windows-functie GlobalFree voor deze ingangen aanroepen wanneer u klaar bent met het dialoogvenster. Wanneer u de implementatie van de afdrukinstallatie van het framework gebruikt die wordt geleverd door CWinApp::OnFilePrintSetup, hoeft u deze ingangen niet vrij te maken. De handgrepen worden onderhouden CWinApp door en worden vrijgemaakt in CWinApp's destructor. Het is alleen nodig om deze ingangen vrij te maken bij het gebruik van CPrintDialog zelfstandige.

Nadat u de besturingselementen voor het dialoogvenster hebt geïnitialiseerd, roept u de DoModal lidfunctie aan om het dialoogvenster weer te geven en kan de gebruiker afdrukopties selecteren. DoModal retourneert of de gebruiker de knop OK (IDOK) of Annuleren (IDCANCEL) heeft geselecteerd.

Als DoModal het resultaat wordt geretourneerd IDOK, kunt u een van CPrintDialogde lidfuncties gebruiken om de informatie-invoer van de gebruiker op te halen.

De CPrintDialog::GetDefaults lidfunctie is handig voor het ophalen van de huidige printerstandaarden zonder een dialoogvenster weer te geven. Deze lidfunctie vereist geen gebruikersinteractie.

U kunt de Windows-functie CommDlgExtendedError gebruiken om te bepalen of er een fout is opgetreden tijdens de initialisatie van het dialoogvenster en voor meer informatie over de fout. Zie de Windows SDK voor meer informatie over deze functie.

CPrintDialog is afhankelijk van het COMMDLG.DLL bestand dat wordt geleverd met Windows-versies 3.1 en hoger.

Als u het dialoogvenster wilt aanpassen, moet u een klasse afleiden van CPrintDialog, een aangepaste dialoogvenstersjabloon opgeven en een berichtoverzicht toevoegen om de meldingsberichten van de uitgebreide besturingselementen te verwerken. Niet-verwerkte berichten moeten worden doorgegeven aan de basisklasse. Het aanpassen van de haakfunctie is niet vereist.

Als u hetzelfde bericht verschillend wilt verwerken, afhankelijk van of het dialoogvenster Afdrukken of Afdrukken instellen is, moet u een klasse afleiden voor elk dialoogvenster. U moet ook de Windows-functie AttachOnSetup overschrijven, waarmee het maken van een nieuw dialoogvenster wordt afgehandeld wanneer de knop Afdrukken instellen is geselecteerd in een dialoogvenster Afdrukken.

Zie Algemene dialoogvensterklassen voor meer informatie over het gebruikCPrintDialog.

Overnamehiërarchie

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CPrintDialog

Requirements

Rubriek:afxdlgs.h

CPrintDialog::CPrintDialog

Maakt een windows-dialoogvenster Afdrukken of Het instellen van afdrukken.

CPrintDialog(
    BOOL bPrintSetupOnly,
    DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
    CWnd* pParentWnd = NULL);

Parameterwaarden

bPrintSetupOnly
Hiermee geeft u op of het standaarddialoogvenster voor Windows Afdrukken of het dialoogvenster Afdrukken instellen wordt weergegeven. Stel deze parameter in om TRUE het standaarddialoogvenster van Windows Print Setup weer te geven. Stel dit in om FALSE het dialoogvenster Windows Afdrukken weer te geven. Als bPrintSetupOnly dat het is FALSE, wordt er nog steeds een optieknop Voor afdrukken weergegeven in het dialoogvenster Afdrukken.

dwFlags
Een of meer vlaggen die u kunt gebruiken om de instellingen van het dialoogvenster aan te passen, gecombineerd met de bitsgewijze OR-operator. Met de PD_ALLPAGES vlag wordt bijvoorbeeld het standaardafdrukbereik ingesteld op alle pagina's van het document. Zie de PRINTDLG structuur in de Windows SDK voor meer informatie over deze vlaggen.

pParentWnd
Een aanwijzer naar het bovenliggende of eigenaarsvenster van het dialoogvenster.

Opmerkingen

Met deze lidfunctie wordt alleen het object samengesteld. Gebruik de DoModal lidfunctie om het dialoogvenster weer te geven.

Houd er rekening mee dat wanneer u de constructor aanroept met bPrintSetupOnly ingesteld op FALSE, de PD_RETURNDC vlag automatisch wordt gebruikt. Na het aanroepen DoModal, GetDefaultsof GetPrinterDC, wordt een printerdomeincontroller geretourneerd in m_pd.hDC. Deze domeincontroller moet worden vrijgemaakt met een aanroep van DeleteDC de beller van CPrintDialog.

Example

// 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

Hiermee maakt u een printerapparaatcontext (DC) op basis van de DEVMODE en DEVNAMES structuren.

HDC CreatePrinterDC();

Retourwaarde

Greep naar de context van het zojuist gemaakte printerapparaat.

Opmerkingen

Deze domeincontroller wordt verondersteld de huidige printerdomeincontroller te zijn en andere eerder verkregen printer-DC's moeten door de gebruiker worden verwijderd. Deze functie kan worden aangeroepen en de resulterende DC die wordt gebruikt, zonder het dialoogvenster Afdrukken weer te geven.

Example

// 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

Hiermee wordt het algemene afdrukdialoogvenster van Windows weergegeven en kan de gebruiker verschillende afdrukopties selecteren, zoals het aantal exemplaren, het paginabereik en of kopieën moeten worden gesorteerd.

virtual INT_PTR DoModal();

Retourwaarde

IDOK of IDCANCEL. Als IDCANCEL deze functie wordt geretourneerd, roept u de Windows-functie CommDlgExtendedError aan om te bepalen of er een fout is opgetreden.

IDOK en IDCANCEL zijn constanten die aangeven of de gebruiker de knop OK of Annuleren heeft geselecteerd.

Opmerkingen

Als u de verschillende afdrukdialoogvensteropties wilt initialiseren door leden van de m_pd structuur in te stellen, moet u dit doen voordat u aanroept DoModal, maar nadat het dialoogvensterobject is samengesteld.

Na het aanroepen DoModalkunt u andere lidfuncties aanroepen om de instellingen of gegevensinvoer van de gebruiker op te halen in het dialoogvenster.

Houd er rekening mee dat wanneer u de constructor aanroept met bPrintSetupOnly ingesteld op FALSE, de PD_RETURNDC vlag automatisch wordt gebruikt. Na het aanroepen DoModal, GetDefaultsof GetPrinterDC, wordt een printerdomeincontroller geretourneerd in m_pd.hDC. Deze domeincontroller moet worden vrijgemaakt met een aanroep van DeleteDC de beller van CPrintDialog.

Example

Zie het voorbeeld voor CPrintDialog::CreatePrinterDC.

CPrintDialog::GetCopies

Hiermee haalt u het aantal aangevraagde exemplaren op.

int GetCopies() const;

Retourwaarde

Het aantal exemplaren dat is aangevraagd.

Opmerkingen

Roep deze functie aan nadat u hebt aangeroepen DoModal om het aantal aangevraagde kopieën op te halen.

Example

Zie het voorbeeld voor CPrintDialog::PrintCollate.

CPrintDialog::GetDefaults

Hiermee haalt u de standaardinstellingen van de standaardprinter op zonder een dialoogvenster weer te geven.

BOOL GetDefaults();

Retourwaarde

Niet-nul als de functie is geslaagd; anders 0.

Opmerkingen

De opgehaalde waarden worden in de m_pd structuur geplaatst.

In sommige gevallen roept een aanroep naar deze functie de constructor aan CPrintDialog waarvoor bPrintSetupOnly deze is ingesteld FALSE. In deze gevallen worden automatisch een printerdomeincontroller en hDevNameshDevMode (twee ingangen in het m_pd gegevenslid) toegewezen.

Als de constructor is CPrintDialog aangeroepen met bPrintSetupOnly ingesteld opFALSE, retourneert deze functie niet alleen hDevNames en bevindt deze zich in m_pd.hDevNames en hDevModem_pd.hDevMode) aan de aanroeper, maar retourneert ook een printerdomeincontroller in m_pd.hDC. Het is de verantwoordelijkheid van de beller om de printerdomeincontroller te verwijderen en de Windows-functie GlobalFree aan te roepen op de ingangen wanneer u klaar bent met het CPrintDialog object.

Example

Dit codefragment haalt de apparaatcontext van de standaardprinter op en rapporteert de gebruiker de resolutie van de printer in dots per inch. (Dit kenmerk van de mogelijkheden van de printer wordt vaak DPI genoemd.)

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

Hiermee haalt u de naam van het geselecteerde printerapparaat op.

CString GetDeviceName() const;

Retourwaarde

De naam van de geselecteerde printer.

Opmerkingen

Roep deze functie aan nadat u DoModal de naam van de geselecteerde printer wilt ophalen of nadat u hebt aangeroepen GetDefaults om de standaardinstellingen van het huidige apparaat van de standaardprinter op te halen. Gebruik een aanwijzer naar het CString object dat wordt geretourneerd GetDeviceName als de waarde van lpszDeviceName in een aanroep naar CDC::CreateDC.

Example

Dit codefragment toont de standaardprinternaam van de gebruiker en de poort waarmee deze is verbonden, samen met de naam van de spooler die de printer gebruikt. De code kan een berichtvak met de tekst 'Uw standaardprinter is HP LaserJet IIIP op \\server\share met winspool' weergeven, bijvoorbeeld.

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

Haalt de DEVMODE structuur op.

LPDEVMODE GetDevMode() const;

Retourwaarde

De DEVMODE gegevensstructuur, die informatie bevat over de initialisatie van het apparaat en de omgeving van een afdrukstuurprogramma. U moet het geheugen ontgrendelen dat door deze structuur wordt genomen met de Windows-functie GlobalUnlock , die wordt beschreven in de Windows SDK.

Opmerkingen

Roep deze functie aan na het aanroepen DoModal of GetDefaults ophalen van informatie over het afdrukapparaat.

Example

Zie het voorbeeld voor CPrintDialog::PrintCollate.

CPrintDialog::GetDriverName

Hiermee haalt u de naam van het geselecteerde printerstuurprogramma op.

CString GetDriverName() const;

Retourwaarde

Een CString vermelding die de door het systeem gedefinieerde stuurprogrammanaam opgeeft.

Opmerkingen

Roep deze functie aan na het aanroepen DoModal of GetDefaults ophalen van de naam van het door het systeem gedefinieerde printerapparaatstuurprogramma. Gebruik een aanwijzer naar het CString object dat wordt geretourneerd GetDriverName als de waarde van lpszDriverName in een aanroep naar CDC::CreateDC.

Example

Zie het voorbeeld voor CPrintDialog::GetDeviceName.

CPrintDialog::GetFromPage

Hiermee haalt u de beginpagina van het afdrukbereik op.

int GetFromPage() const;

Retourwaarde

Het beginpaginanummer in het paginabereik dat moet worden afgedrukt.

Opmerkingen

Roep deze functie aan nadat u hebt aangeroepen DoModal om het beginpaginanummer op te halen in het bereik van pagina's dat moet worden afgedrukt.

Example

Zie het voorbeeld voor CPrintDialog::m_pd.

CPrintDialog::GetPortName

Hiermee haalt u de naam van de geselecteerde printerpoort op.

CString GetPortName() const;

Retourwaarde

De naam van de geselecteerde printerpoort.

Opmerkingen

Roep deze functie aan na het aanroepen DoModal of GetDefaults ophalen van de naam van de momenteel geselecteerde printerpoort.

Example

Zie het voorbeeld voor CPrintDialog::GetDeviceName.

CPrintDialog::GetPrinterDC

Hiermee haalt u een ingang op voor de context van het printerapparaat.

HDC GetPrinterDC() const;

Retourwaarde

Een ingang naar de context van het printerapparaat indien geslaagd; anders NULL.

Opmerkingen

Als de parameter van de bPrintSetupOnlyCPrintDialog constructor was FALSE (waarmee wordt aangegeven dat het dialoogvenster Afdrukken wordt weergegeven), GetPrinterDC retourneert u een ingang naar de context van het printerapparaat. U moet de Windows-functie DeleteDC aanroepen om de apparaatcontext te verwijderen wanneer u klaar bent met het gebruik ervan.

Example

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

Hiermee haalt u de eindpagina van het afdrukbereik op.

int GetToPage() const;

Retourwaarde

Het eindpaginanummer in het aantal pagina's dat moet worden afgedrukt.

Opmerkingen

Roep deze functie aan nadat u hebt aangeroepen DoModal om het eindpaginanummer op te halen in het bereik van pagina's dat moet worden afgedrukt.

Example

Zie het voorbeeld voor CPrintDialog::m_pd.

CPrintDialog::m_pd

Een structuur waarvan leden de kenmerken van het dialoogvensterobject opslaan.

PRINTDLG& m_pd;

Opmerkingen

Nadat u een CPrintDialog object hebt gemaakt, kunt m_pd u verschillende aspecten van het dialoogvenster instellen voordat u de DoModal lidfunctie aanroept. Zie de Windows SDK voor meer informatie over de m_pd structuur PRINTDLG .

Als u het m_pd gegevenslid rechtstreeks wijzigt, overschrijft u het standaardgedrag.

Example

// 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

Bepaalt of alle pagina's van het document moeten worden afgedrukt.

BOOL PrintAll() const;

Retourwaarde

Niet-nul als alle pagina's in het document moeten worden afgedrukt; anders 0.

Opmerkingen

Roep deze functie aan nadat u hebt aangeroepen DoModal om te bepalen of alle pagina's in het document moeten worden afgedrukt.

Example

Zie het voorbeeld voor CPrintDialog::m_pd.

CPrintDialog::PrintCollate

Bepaalt of gesorteerde kopieën worden aangevraagd.

BOOL PrintCollate() const;

Retourwaarde

Niet-nul als de gebruiker het samenvouwvak in het dialoogvenster selecteert; anders 0.

Opmerkingen

Roep deze functie aan nadat u hebt aangeroepen DoModal om te bepalen of de printer alle afgedrukte exemplaren van het document moet sorteren.

Example

// 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

Hiermee bepaalt u of alleen een opgegeven bereik van pagina's moet worden afgedrukt.

BOOL PrintRange() const;

Retourwaarde

Niet-nul als slechts een reeks pagina's in het document moeten worden afgedrukt; anders 0.

Opmerkingen

Roep deze functie aan nadat u hebt aangeroepen DoModal om te bepalen of er slechts een reeks pagina's in het document moet worden afgedrukt.

Example

Zie het voorbeeld voor CPrintDialog::m_pd.

CPrintDialog::PrintSelection

Bepaalt of alleen de geselecteerde items moeten worden afgedrukt.

BOOL PrintSelection() const;

Retourwaarde

Niet-nul als alleen de geselecteerde items moeten worden afgedrukt; anders 0.

Opmerkingen

Roep deze functie aan nadat u hebt aangeroepen DoModal om te bepalen of alleen de geselecteerde items moeten worden afgedrukt.

Example

Zie het voorbeeld voor CPrintDialog::m_pd.

Zie ook

MFC-voorbeeld DIBLOOK
CCommonDialog klasse
Hiërarchiegrafiek
CPrintInfo Structuur