CPrintDialog
Třída
Zapouzdřuje služby poskytované běžným dialogovým oknem Windows pro tisk.
Syntaxe
class CPrintDialog : public CCommonDialog
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CPrintDialog::CPrintDialog |
CPrintDialog Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CPrintDialog::CreatePrinterDC |
Vytvoří kontext zařízení tiskárny bez zobrazení dialogového okna Tisk. |
CPrintDialog::DoModal |
Zobrazí dialogové okno a umožní uživateli provést výběr. |
CPrintDialog::GetCopies |
Načte požadovaný počet kopií. |
CPrintDialog::GetDefaults |
Načte výchozí hodnoty zařízení bez zobrazení dialogového okna. |
CPrintDialog::GetDeviceName |
Načte název aktuálně vybraného zařízení tiskárny. |
CPrintDialog::GetDevMode |
Načte DEVMODE strukturu. |
CPrintDialog::GetDriverName |
Načte název aktuálně vybraného ovladače tiskárny. |
CPrintDialog::GetFromPage |
Načte počáteční stránku rozsahu tisku. |
CPrintDialog::GetPortName |
Načte název aktuálně vybraného portu tiskárny. |
CPrintDialog::GetPrinterDC |
Načte popisovač kontextu zařízení tiskárny. |
CPrintDialog::GetToPage |
Načte koncovou stránku rozsahu tisku. |
CPrintDialog::PrintAll |
Určuje, zda se mají vytisknout všechny stránky dokumentu. |
CPrintDialog::PrintCollate |
Určuje, zda jsou požadovány kompletované kopie. |
CPrintDialog::PrintRange |
Určuje, zda se má vytisknout pouze zadaný rozsah stránek. |
CPrintDialog::PrintSelection |
Určuje, zda se mají vytisknout pouze aktuálně vybrané položky. |
Veřejné datové členy
Název | Popis |
---|---|
CPrintDialog::m_pd |
Struktura použitá k přizpůsobení objektu CPrintDialog . |
Poznámky
Běžná dialogová okna pro tisk poskytují snadný způsob, jak implementovat dialogová okna Nastavení tisku a tisku způsobem konzistentním se standardy Windows.
Poznámka:
Třída CPrintDialogEx
zapouzdřuje služby poskytované seznamem vlastností Tisk systému Windows. Další informace najdete v přehledu CPrintDialogEx
.
CPrintDialog
Funkce je nahrazena funkcí , CPageSetupDialog
která je navržena tak, aby vám poskytovala společné dialogové okno pro nastavení tisku i vzhled stránky.
Při zpracování mnoha aspektů procesu tisku pro vaši aplikaci můžete spoléhat na architekturu. V tomto případě architektura automaticky zobrazí společné dialogové okno systému Windows pro tisk. Můžete mít také rozhraní popisovač tisku pro vaši aplikaci, ale přepsat společné dialogové okno Tisk pomocí vlastního dialogového okna tisku. Další informace o použití architektury pro zpracování úloh tisku naleznete v článku Tisk.
Pokud chcete, aby vaše aplikace zpracovávala tisk bez zapojení architektury, můžete použít CPrintDialog
třídu "tak, jak je" se zadaným konstruktorem, nebo můžete odvodit vlastní třídu dialogového okna a CPrintDialog
napsat konstruktor tak, aby vyhovoval vašim potřebám. V obou případech se tato dialogová okna budou chovat jako standardní dialogová okna MFC, protože jsou odvozeny z třídy CCommonDialog
.
Chcete-li použít CPrintDialog
objekt, nejprve vytvořte objekt pomocí konstruktoru CPrintDialog
. Po vytvoření dialogového okna můžete nastavit nebo upravit jakékoli hodnoty ve m_pd
struktuře a inicializovat hodnoty ovládacích prvků dialogového okna. Struktura m_pd
je typu PRINTDLG
. Další informace o této struktuře najdete v sadě Windows SDK.
Pokud nezadáte vlastní popisovače m_pd
pro hDevMode
členy a hDevNames
členy, nezapomeňte při práci s dialogovým oknem volat funkci GlobalFree
Windows pro tyto popisovače. Pokud používáte implementaci nastavení tisku architektury, kterou CWinApp::OnFilePrintSetup
poskytuje , nemusíte tyto popisovače uvolnit. Popisovače jsou udržovány CWinApp
a jsou uvolněny v CWinApp
destruktoru. Tyto úchyty je nutné uvolnit pouze při použití CPrintDialog
samostatného.
Po inicializaci ovládacích prvků dialogového okna zavolejte DoModal
členovou funkci, aby zobrazila dialogové okno a povolila uživateli vybrat možnosti tisku. DoModal
vrátí, zda uživatel vybral tlačítko OK (IDOK
) nebo Zrušit (IDCANCEL
).
Pokud DoModal
se vrátí IDOK
, můžete použít některou z CPrintDialog
členských funkcí k načtení vstupu informací uživatelem.
Členová CPrintDialog::GetDefaults
funkce je užitečná pro načtení výchozích hodnot aktuální tiskárny bez zobrazení dialogového okna. Tato členová funkce nevyžaduje žádnou interakci uživatele.
Pomocí funkce Systému Windows CommDlgExtendedError
můžete určit, jestli během inicializace dialogového okna došlo k chybě, a získat další informace o chybě. Další informace o této funkci najdete v sadě Windows SDK.
CPrintDialog
spoléhá na COMMDLG.DLL
soubor, který je dodáván s Windows verze 3.1 a novější.
Chcete-li přizpůsobit dialogové okno, odvodit třídu z CPrintDialog
, poskytnout vlastní šablonu dialogového okna a přidat mapu zpráv pro zpracování zpráv z rozšířených ovládacích prvků. Všechny nezpracované zprávy by měly být předány do základní třídy. Přizpůsobení funkce háku se nevyžaduje.
Chcete-li zpracovat stejnou zprávu odlišně v závislosti na tom, zda je dialogové okno Tisk nebo Tiskové nastavení, je nutné odvodit třídu pro každé dialogové okno. Musíte také přepsat funkci Systému Windows AttachOnSetup
, která zpracovává vytvoření nového dialogového okna, když je v dialogovém okně Tisk vybráno tlačítko Vzhled tisku.
Další informace o použití CPrintDialog
naleznete v tématu Běžné třídy dialogových oken.
Hierarchie dědičnosti
CPrintDialog
Požadavky
Záhlaví: afxdlgs.h
CPrintDialog::CPrintDialog
Vytvoří buď objekt dialogového okna Tisk nebo Tisk instalačního okna systému Windows.
CPrintDialog(
BOOL bPrintSetupOnly,
DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
CWnd* pParentWnd = NULL);
Parametry
bPrintSetupOnly
Určuje, zda se zobrazí standardní dialogové okno Tisk systému Windows nebo Dialogové okno Nastavení tisku. Nastavte tento parametr tak, aby TRUE
se zobrazilo standardní dialogové okno Instalační program tisku systému Windows. Nastavte ho tak, aby FALSE
se zobrazilo dialogové okno Tisk ve Windows. Pokud bPrintSetupOnly
je FALSE
tato možnost, v dialogovém okně Tisk se stále zobrazuje tlačítko Možnosti Nastavení tisku.
dwFlags
Jeden nebo více příznaků, které můžete použít k přizpůsobení nastavení dialogového okna v kombinaci pomocí bitové operátoru OR. Příznak například PD_ALLPAGES
nastaví výchozí rozsah tisku na všechny stránky dokumentu. PRINTDLG
Další informace o těchto příznakech najdete ve struktuře v sadě Windows SDK.
pParentWnd
Ukazatel na nadřazené okno nebo okno vlastníka dialogového okna
Poznámky
Tato členová funkce vytvoří pouze objekt. DoModal
Pomocí členské funkce zobrazte dialogové okno.
Všimněte si, že při volání konstruktoru s bPrintSetupOnly
nastavenou na FALSE
, PD_RETURNDC
příznak se automaticky použije. Po volání DoModal
, GetDefaults
nebo GetPrinterDC
, tiskárna DC bude vrácena v m_pd.hDC
. Tento řadič domény musí být uvolněn voláním DeleteDC
volajícího CPrintDialog
.
Příklad
// 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
Vytvoří kontext zařízení tiskárny (DC) ze DEVMODE
struktur a DEVNAMES
struktur.
HDC CreatePrinterDC();
Návratová hodnota
Umožňuje zpracovat nově vytvořený kontext zařízení tiskárny.
Poznámky
Tento řadič domény se předpokládá jako aktuální řadič domény tiskárny a všechny ostatní dříve získané řadiče domény tiskárny musí uživatel odstranit. Tuto funkci lze volat a výsledný řadič domény se používá bez zobrazení dialogového okna Tisk.
Příklad
// 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
Zobrazí společné tiskové dialogové okno systému Windows a umožňuje uživateli vybrat různé možnosti tisku, jako je počet kopií, rozsah stránek a zda mají být kopie kompletovány.
virtual INT_PTR DoModal();
Návratová hodnota
IDOK
nebo IDCANCEL
. Pokud IDCANCEL
je vrácena, zavolejte funkci Systému Windows CommDlgExtendedError
, abyste zjistili, zda došlo k chybě.
IDOK
a IDCANCEL
jsou konstanty, které označují, jestli uživatel vybral tlačítko OK nebo Zrušit .
Poznámky
Pokud chcete inicializovat různé možnosti dialogového okna tisku nastavením členů m_pd
struktury, měli byste to udělat před voláním DoModal
, ale po vytvoření objektu dialogového okna.
Po volání můžete zavolat DoModal
další členské funkce, které načtou nastavení nebo informace zadané uživatelem do dialogového okna.
Všimněte si, že při volání konstruktoru s bPrintSetupOnly
nastavenou na FALSE
, PD_RETURNDC
příznak se automaticky použije. Po volání DoModal
, GetDefaults
nebo GetPrinterDC
, tiskárna DC bude vrácena v m_pd.hDC
. Tento řadič domény musí být uvolněn voláním DeleteDC
volajícího CPrintDialog
.
Příklad
Podívejte se na příklad pro CPrintDialog::CreatePrinterDC
.
CPrintDialog::GetCopies
Načte požadovaný počet kopií.
int GetCopies() const;
Návratová hodnota
Počet požadovaných kopií.
Poznámky
Voláním této funkce načtěte DoModal
požadovaný počet kopií.
Příklad
Podívejte se na příklad pro CPrintDialog::PrintCollate
.
CPrintDialog::GetDefaults
Načte výchozí nastavení zařízení výchozí tiskárny bez zobrazení dialogového okna.
BOOL GetDefaults();
Návratová hodnota
Nenulové, pokud byla funkce úspěšná; jinak 0.
Poznámky
Načtené hodnoty jsou umístěny ve struktuře m_pd
.
V některých případech volání této funkce zavolá konstruktor s CPrintDialog
bPrintSetupOnly
nastavenou na FALSE
hodnotu . V těchto případech se automaticky přidělí řadič domény tiskárny a hDevNames
hDevMode
(dva úchyty umístěné v datovém členu m_pd
).
Pokud byl konstruktor pro CPrintDialog
volána s nastavenou bPrintSetupOnly
na FALSE
, tato funkce se nevrátí hDevNames
a nachází pouze v m_pd.hDevNames
a m_pd.hDevMode
hDevMode
) volajícímu, ale vrátí také tiskárnu DC v m_pd.hDC
. Je zodpovědností volajícího odstranit řadič domény tiskárny a volat funkci Windows GlobalFree
na popisovačích, jakmile s objektem CPrintDialog
skončíte.
Příklad
Tento fragment kódu získá kontext zařízení výchozí tiskárny a oznamuje uživateli rozlišení tiskárny v tečkách na palec. (Tento atribut schopností tiskárny se často označuje jako 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
Načte název aktuálně vybraného zařízení tiskárny.
CString GetDeviceName() const;
Návratová hodnota
Název aktuálně vybrané tiskárny.
Poznámky
Volání této funkce po volání DoModal
načíst název aktuálně vybrané tiskárny nebo po volání GetDefaults
načíst aktuální výchozí nastavení zařízení výchozí tiskárny. Použijte ukazatel na CString
objekt vrácený GetDeviceName
jako hodnotu lpszDeviceName
ve volání CDC::CreateDC
.
Příklad
Tento fragment kódu zobrazuje výchozí název tiskárny uživatele a port, ke kterému je připojený, spolu s názvem zařazování, který tiskárna používá. Kód může zobrazit okno se zprávou "Výchozí tiskárna je HP LaserJet IIIP na \\server\share pomocí winspoolu", například.
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
Načte DEVMODE
strukturu.
LPDEVMODE GetDevMode() const;
Návratová hodnota
Datová DEVMODE
struktura, která obsahuje informace o inicializaci zařízení a prostředí ovladače tisku. Paměť pořízenou touto strukturou musíte odemknout pomocí funkce Systému Windows GlobalUnlock
, která je popsaná v sadě Windows SDK.
Poznámky
Volání této funkce po volání DoModal
nebo GetDefaults
načtení informací o tiskovém zařízení.
Příklad
Podívejte se na příklad pro CPrintDialog::PrintCollate
.
CPrintDialog::GetDriverName
Načte název aktuálně vybraného ovladače tiskárny.
CString GetDriverName() const;
Návratová hodnota
Zadejte CString
název ovladače definovaného systémem.
Poznámky
Volejte tuto funkci po volání DoModal
nebo GetDefaults
načtení názvu ovladače zařízení tiskárny definovaného systémem. Použijte ukazatel na CString
objekt vrácený GetDriverName
jako hodnotu lpszDriverName
ve volání CDC::CreateDC
.
Příklad
Podívejte se na příklad pro CPrintDialog::GetDeviceName
.
CPrintDialog::GetFromPage
Načte počáteční stránku rozsahu tisku.
int GetFromPage() const;
Návratová hodnota
Počáteční číslo stránky v rozsahu stránek, které se mají vytisknout.
Poznámky
Voláním této funkce načtěte DoModal
počáteční číslo stránky v rozsahu stránek, který se má vytisknout.
Příklad
Podívejte se na příklad pro CPrintDialog::m_pd
.
CPrintDialog::GetPortName
Načte název aktuálně vybraného portu tiskárny.
CString GetPortName() const;
Návratová hodnota
Název aktuálně vybraného portu tiskárny.
Poznámky
Volání této funkce po volání DoModal
nebo GetDefaults
načtení názvu aktuálně vybraného portu tiskárny.
Příklad
Podívejte se na příklad pro CPrintDialog::GetDeviceName.
CPrintDialog::GetPrinterDC
Načte popisovač kontextu zařízení tiskárny.
HDC GetPrinterDC() const;
Návratová hodnota
Popisovač kontextu zařízení tiskárny v případě úspěchu; jinak NULL
.
Poznámky
bPrintSetupOnly
Pokud byl FALSE
parametr konstruktoru CPrintDialog
(indikující, že se zobrazí dialogové okno Tisk), GetPrinterDC
vrátí popisovač kontextu zařízení tiskárny. Až budete hotovi, musíte funkci Windows DeleteDC
volat, abyste odstranili kontext zařízení.
Příklad
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
Načte koncovou stránku rozsahu tisku.
int GetToPage() const;
Návratová hodnota
Koncové číslo stránky v rozsahu stránek, které se mají vytisknout.
Poznámky
Voláním této funkce načtěte DoModal
koncové číslo stránky v rozsahu stránek, který se má vytisknout.
Příklad
Podívejte se na příklad pro CPrintDialog::m_pd
.
CPrintDialog::m_pd
Struktura, jejíž členové ukládají charakteristiky objektu dialogového okna.
PRINTDLG& m_pd;
Poznámky
Po vytvoření objektu CPrintDialog
můžete před voláním DoModal
členské funkce nastavit m_pd
různé aspekty dialogového okna. Další informace o struktuře m_pd
najdete PRINTDLG
v sadě Windows SDK.
Pokud datový člen upravíte m_pd
přímo, přepíšete výchozí chování.
Příklad
// 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
Určuje, zda se mají vytisknout všechny stránky dokumentu.
BOOL PrintAll() const;
Návratová hodnota
Nenulové, pokud budou vytištěny všechny stránky v dokumentu; jinak 0.
Poznámky
Zavoláním této funkce DoModal
určíte, jestli se mají vytisknout všechny stránky v dokumentu.
Příklad
Podívejte se na příklad pro CPrintDialog::m_pd
.
CPrintDialog::PrintCollate
Určuje, zda jsou požadovány kompletované kopie.
BOOL PrintCollate() const;
Návratová hodnota
Nenulové, pokud uživatel zaškrtne políčko sbalit v dialogovém okně; jinak 0.
Poznámky
Voláním této funkce DoModal
určíte, zda má tiskárna kompletovat všechny vytištěné kopie dokumentu.
Příklad
// 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
Určuje, zda se má vytisknout pouze zadaný rozsah stránek.
BOOL PrintRange() const;
Návratová hodnota
Nenulové, pokud se má vytisknout pouze rozsah stránek v dokumentu; jinak 0.
Poznámky
Zavoláním této funkce DoModal
určíte, jestli se má vytisknout jenom rozsah stránek v dokumentu.
Příklad
Podívejte se na příklad pro CPrintDialog::m_pd
.
CPrintDialog::PrintSelection
Určuje, zda se mají vytisknout pouze aktuálně vybrané položky.
BOOL PrintSelection() const;
Návratová hodnota
Nenulové, pokud budou vytištěny pouze vybrané položky; jinak 0.
Poznámky
Voláním této funkce DoModal
určíte, zda se mají vytisknout pouze aktuálně vybrané položky.
Příklad
Podívejte se na příklad pro CPrintDialog::m_pd
.
Viz také
Mfc – ukázka DIBLOOK
CCommonDialog
Třída
Graf hierarchie
CPrintInfo
Struktura