Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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
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