CPageSetupDialog – třída
Zapouzdřuje služby poskytované běžným dialogovým oknem Vzhled stránky OLE systému Windows s další podporou nastavení a úpravou tiskových okrajů.
Syntaxe
class CPageSetupDialog : public CCommonDialog
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CPageSetupDialog::CPageSetupDialog | CPageSetupDialog Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CPageSetupDialog::CreatePrinterDC | Vytvoří kontext zařízení pro tisk. |
CPageSetupDialog::D oModal | Zobrazí dialogové okno a povolí uživateli výběr. |
CPageSetupDialog::GetDeviceName | Vrátí název zařízení tiskárny. |
CPageSetupDialog::GetDevMode | Vrátí aktuální DEVMODE tiskárny. |
CPageSetupDialog::GetDriverName | Vrátí ovladač používaný tiskárnou. |
CPageSetupDialog::GetMargins | Vrátí nastavení aktuálního okraje tiskárny. |
CPageSetupDialog::GetPaperSize | Vrátí formát papíru tiskárny. |
CPageSetupDialog::GetPortName | Vrátí název výstupního portu. |
CPageSetupDialog::OnDrawPage | Volané architekturou k vykreslení obrázku obrazovky vytištěné stránky. |
CPageSetupDialog::P reDrawPage | Volané architekturou před vykreslením obrázku obrazovky vytištěné stránky. |
Veřejné datové členy
Název | Popis |
---|---|
CPageSetupDialog::m_psd | Struktura použitá k přizpůsobení objektu CPageSetupDialog . |
Poznámky
Tato třída je navržena tak, aby místo dialogového okna Nastavení tisku.
Chcete-li použít CPageSetupDialog
objekt, nejprve vytvořte objekt pomocí konstruktoru CPageSetupDialog
. Po vytvoření dialogového okna můžete nastavit nebo upravit jakékoli hodnoty v datovém členu m_psd
tak, aby inicializovaly hodnoty ovládacích prvků dialogového okna. Struktura m_psd je typu PAGESETUPDLG.
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
vrátí idOK, můžete k načtení informací, které uživatel zadá, použít několik CPageSetupDialog
členských funkcí nebo získat přístup k datovému m_psd
členu.
Poznámka:
Po zavření společného dialogového okna Vzhled stránky OLE nebudou všechny změny provedené uživatelem uloženy rozhraním. Je až do samotné aplikace, aby se všechny hodnoty z tohoto dialogového okna uložily do trvalého umístění, například člena dokumentu aplikace nebo třídy aplikace.
Hierarchie dědičnosti
CPageSetupDialog
Požadavky
Hlavička: afxdlgs.h
CPageSetupDialog::CPageSetupDialog
Voláním této funkce vytvoříte CPageSetupDialog
objekt.
CPageSetupDialog(
DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
CWnd* pParentWnd = NULL);
Parametry
dwFlags
Jeden nebo více příznaků, které můžete použít k přizpůsobení nastavení dialogového okna. Hodnoty lze kombinovat pomocí bitové operátoru OR. Tyto hodnoty mají následující významy:
PSD_DEFAULTMINMARGINS Nastaví minimální povolenou šířku okrajů stránky tak, aby byly stejné jako minimální hodnoty tiskárny. Tento příznak se ignoruje, pokud jsou zadány také příznaky PSD_MARGINS a PSD_MINMARGINS.
PSD_INWININIINTLMEASURE Není implementováno.
PSD_MINMARGINS Způsobí, že systém použije hodnoty zadané v členu
rtMinMargin
jako minimální povolené šířky pro levé, horní, pravé a dolní okraje. Systém zabrání uživateli v zadání šířky, která je menší než zadané minimum. Pokud není zadán PSD_MINMARGINS, nastaví systém minimální povolenou šířku na šířku povolenou tiskárnou.PSD_MARGINS Aktivuje oblast ovládacího prvku okraje.
PSD_INTHOUSANDTHSOFINCHES Způsobí měření jednotek dialogového okna v 1/1000 palce.
PSD_INHUNDREDTHSOFMILLIMETERS Způsobí měření jednotek dialogového okna v 1/100 milimetru.
PSD_DISABLEMARGINS Zakáže ovládací prvky dialogového okna okrajů.
PSD_DISABLEPRINTER Zakáže tlačítko Tiskárna.
PSD_NOWARNING Zabrání zobrazení zprávy upozornění, pokud není k dispozici výchozí tiskárna.
PSD_DISABLEORIENTATION Zakáže ovládací prvek dialogového okna orientace stránky.
PSD_RETURNDEFAULT Příčiny
CPageSetupDialog
vrácení struktur DEVMODE a DEVNAMES , které jsou inicializovány pro výchozí systémovou tiskárnu bez zobrazení dialogového okna. Předpokládá se, že oběhDevNames
hodnoty majíhDevMode
hodnotu NULL. V opačném případě funkce vrátí chybu. Pokud je výchozí systémová tiskárna podporována starým ovladačem tiskárny (starším než Windows verze 3.0), vrátí se pouzehDevNames
hodnotahDevMode
NULL.PSD_DISABLEPAPER Zakáže ovládací prvek pro výběr papíru.
PSD_SHOWHELP Způsobí, že dialogové okno zobrazí tlačítko Nápověda. Člen
hwndOwner
nesmí mít hodnotu NULL, pokud je tento příznak zadán.PSD_ENABLEPAGESETUPHOOK Povolí funkci háku zadanou v
lpfnSetupHook
.PSD_ENABLEPAGESETUPTEMPLATE Způsobí, že operační systém vytvoří dialogové okno pomocí dialogového okna šablony identifikovaného
hInstance
alpSetupTemplateName
.PSD_ENABLEPAGESETUPTEMPLATEHANDLE Označuje, že
hInstance
identifikuje datový blok, který obsahuje předem načtenou šablonu dialogového okna. Systém ignorujelpSetupTemplateName
, pokud je tento příznak zadán.PSD_ENABLEPAGEPAINTHOOK Povolí funkci háku zadanou v
lpfnPagePaintHook
.PSD_DISABLEPAGEPAINTING Zakáže oblast kreslení dialogového okna.
pParentWnd
Ukazatel na nadřazený nebo vlastník dialogového okna
Poznámky
K zobrazení dialogového okna použijte funkci DoModal .
Příklad
void CMyRichEditView::OnPageSetupDlg()
{
CPageSetupDialog psd(PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS |
PSD_ENABLEPAGEPAINTHOOK, this);
// Initialize margins
psd.m_psd.rtMargin.top = 1000;
psd.m_psd.rtMargin.left = 1250;
psd.m_psd.rtMargin.right = 1250;
psd.m_psd.rtMargin.bottom = 1000;
psd.m_psd.lpfnPagePaintHook = (LPPAGEPAINTHOOK)PaintHook;
if (IDOK == psd.DoModal())
{
// Propagate changes to the app
AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
}
else
{
TRACE(_T("CommDlgExtendedError returned error %d from ")
_T("CPageSetupDialog::DoModal().\n"),
(int)CommDlgExtendedError());
}
}
CPageSetupDialog::CreatePrinterDC
Vytvoří kontext zařízení tiskárny ze struktur DEVMODE a DEVNAMES .
HDC CreatePrinterDC();
Návratová hodnota
Popisovač nově vytvořeného kontextu zařízení tiskárny (DC).
CPageSetupDialog::D oModal
Voláním této funkce zobrazíte dialogové okno Společné nastavení stránky OLE systému Windows a umožníte uživateli vybrat různé možnosti nastavení tisku, jako jsou tiskové okraje, velikost a orientace papíru a cílové tiskárny.
virtual INT_PTR DoModal();
Návratová hodnota
IDOK nebo IDCANCEL. Pokud je vrácena funkce IDCANCEL, zavolejte funkci CommDlgExtendedError systému Windows, abyste zjistili, zda došlo k chybě.
IDOK a IDCANCEL jsou konstanty, které označují, zda uživatel vybral tlačítko OK nebo Zrušit.
Poznámky
Uživatel má navíc přístup k možnostem nastavení tiskárny, jako je síťové umístění a vlastnosti specifické pro vybranou tiskárnu.
Pokud chcete inicializovat různé možnosti dialogového okna Vzhled stránky nastavením členů m_psd
struktury, měli byste to udělat před voláním DoModal
a po vytvoření objektu dialogového okna. Po volání DoModal
volejte další členské funkce, aby se do dialogového okna načetla nastavení nebo vstup informací uživatelem.
Pokud chcete rozšířit aktuální nastavení zadaná uživatelem, zavolejte CWinApp ::SelectPrinter. Tato funkce přebírá informace z objektu CPageSetupDialog
a inicializuje a vybere nový řadič domény tiskárny se správnými atributy.
AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
Příklad
Podívejte se na příklad pro CPageSetupDialog::CPageSetupDialog.
CPageSetupDialog::GetDeviceName
Voláním této funkce načtěte DoModal
název aktuálně vybrané tiskárny.
CString GetDeviceName() const;
Návratová hodnota
Název zařízení používaný objektem CPageSetupDialog
.
CPageSetupDialog::GetDevMode
Voláním této funkce načtěte DoModal
informace o kontextu zařízení tiskárny objektu CPageSetupDialog
.
LPDEVMODE GetDevMode() const;
Návratová hodnota
Datová struktura DEVMODE , která obsahuje informace o inicializaci zařízení a prostředí tiskového ovladače. Paměť pořízenou touto strukturou musíte odemknout pomocí funkce Windows GlobalUnlock , která je popsaná v sadě Windows SDK.
CPageSetupDialog::GetDriverName
Volání této funkce po volání DoModal načtení názvu systémového definovaného ovladače zařízení tiskárny.
CString GetDriverName() const;
Návratová hodnota
Zadejte CString
název ovladače definovaného systémem.
Poznámky
Použijte ukazatel na CString
objekt vrácený GetDriverName
jako hodnotu lpszDriverName
ve volání CDC::CreateDC.
CPageSetupDialog::GetMargins
Volání této funkce po volání k DoModal
načtení okrajů ovladače zařízení tiskárny.
void GetMargins(
LPRECT lpRectMargins,
LPRECT lpRectMinMargins) const;
Parametry
lpRectMargins
Ukazatel na strukturu RECT nebo objekt CRect , který popisuje (v 1/1000 palcích nebo 1/100 mm) tiskové okraje pro aktuálně vybranou tiskárnu. Pokud vás tento obdélník nezajímá, předejte pro tento parametr hodnotu NULL.
lpRectMinMargins
Ukazatel na RECT
strukturu nebo CRect
objekt, který popisuje (v 1/1000 palcích nebo 1/100 mm) minimální tiskové okraje pro aktuálně vybranou tiskárnu. Pokud vás tento obdélník nezajímá, předejte pro tento parametr hodnotu NULL.
CPageSetupDialog::GetPaperSize
Voláním této funkce načtěte velikost papíru vybraného pro tisk.
CSize GetPaperSize() const;
Návratová hodnota
Objekt CSize obsahující formát papíru (1/1000 palců nebo 1/100 mm) vybraný pro tisk.
CPageSetupDialog::GetPortName
Voláním této funkce načtěte DoModal
název aktuálně vybraného portu tiskárny.
CString GetPortName() const;
Návratová hodnota
Název aktuálně vybraného portu tiskárny.
CPageSetupDialog::m_psd
Struktura typu PAGESETUPDLG, jejíž členové ukládají vlastnosti dialogového okna objektu.
PAGESETUPDLG m_psd;
Poznámky
Po vytvoření objektu CPageSetupDialog
můžete před voláním DoModal
členské funkce nastavit m_psd
různé aspekty dialogového okna.
Pokud datový člen upravíte m_psd
přímo, přepíšete veškeré výchozí chování.
Další informace o struktuře PAGESETUPDLG naleznete v sadě Windows SDK.
Podívejte se na příklad pro CPageSetupDialog::CPageSetupDialog.
CPageSetupDialog::OnDrawPage
Volané architekturou k vykreslení obrázku obrazovky vytištěné stránky.
virtual UINT OnDrawPage(
CDC* pDC,
UINT nMessage,
LPRECT lpRect);
Parametry
pDC
Ukazatel na kontext zařízení tiskárny.
nMessage
Určuje zprávu, která označuje oblast stránky, která se právě nakreslela. Může to být jedna z následujících možností:
WM_PSD_FULLPAGERECT celou oblast stránky.
WM_PSD_MINMARGINRECT Aktuální minimální okraje.
WM_PSD_MARGINRECT Aktuální okraje.
WM_PSD_GREEKTEXTRECT Obsah stránky.
WM_PSD_ENVSTAMPRECT Area reserved for a postage stamp representation.
WM_PSD_YAFULLPAGERECT Oblast pro reprezentaci zpáteční adresy. Tato oblast se rozšiřuje na okraje oblasti ukázkové stránky.
lpRect
Ukazatel na objekt CRect nebo RECT obsahující souřadnice oblasti výkresu.
Návratová hodnota
Nenulová hodnota, pokud je zpracována; jinak 0.
Poznámky
Tento obrázek se pak zobrazí jako součást společného dialogového okna Vzhled stránky OLE. Výchozí implementace nakreslí obrázek stránky textu.
Přepište tuto funkci tak, aby se přizpůsobil výkres konkrétní oblasti obrázku nebo celého obrázku. Můžete to provést pomocí switch
příkazu s case
příkazy, které kontrolují hodnotu nMessage. Pokud chcete například přizpůsobit vykreslování obsahu obrázku stránky, můžete použít následující ukázkový kód:
switch (nMessage)
{
case WM_PSD_GREEKTEXTRECT:
DrawMyImage(pDC, lpRect); //draws my special graphic
return 1;
default:
return CPageSetupDialog::OnDrawPage(pDC, nMessage, lpRect);
}
Všimněte si, že nemusíte zpracovávat každý případ nMessage. Můžete zvolit zpracování jedné součásti obrázku, několika komponent obrázku nebo celé oblasti.
CPageSetupDialog::P reDrawPage
Volané architekturou před nakreslením obrázku obrazovky vytištěné stránky.
virtual UINT PreDrawPage(
WORD wPaper,
WORD wFlags,
LPPAGESETUPDLG pPSD);
Parametry
wPaper
Určuje hodnotu, která označuje formát papíru. Tato hodnota může být jednou z DMPAPER_ hodnot uvedených v popisu struktury DEVMODE .
wFlags
Určuje orientaci papíru nebo obálky a zda je tiskárna zařízení s tečkou nebo hppcl (Hewlett Packard Printer Control Language). Tento parametr může mít jednu z následujících hodnot:
0x001 Papír v režimu na šířku (tečka)
0x003 papír v režimu na šířku (HPPCL)
0x005 papír v režimu na výšku (tečka)
0x007 papír v režimu na výšku (HPPCL)
0x00b Obálka v režimu na šířku (HPPCL)
0x00d Obálka v režimu na výšku (tečka)
0x019 Obálka v režimu na šířku (tečka)
0x01f Obálka v režimu na výšku (tečka)
pPSD
Ukazatel na PAGESETUPDLG
strukturu Další informace o PAGESETUPDLG naleznete v sadě Windows SDK.
Návratová hodnota
Nenulová hodnota, pokud je zpracována; jinak 0.
Poznámky
Přepište tuto funkci tak, aby se přizpůsobil výkres obrázku. Pokud tuto funkci přepíšete a vrátíte hodnotu PRAVDA, musíte nakreslit celý obrázek. Pokud tuto funkci přepíšete a vrátíte hodnotu FALSE, celý výchozí obrázek je vykreslen architekturou.