Sdílet prostřednictvím


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

Jméno popis
CPageSetupDialog::CPageSetupDialog CPageSetupDialog Vytvoří objekt.

Veřejné metody

Jméno 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

Jméno 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

Objekt CObject

CCmdTarget

Cwnd

Cdialog

CCommonDialog

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 pouze hDevNames hodnota hDevMode 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 a lpSetupTemplateName.

  • PSD_ENABLEPAGESETUPTEMPLATEHANDLE Označuje, že hInstance identifikuje datový blok, který obsahuje předem načtenou šablonu dialogového okna. Systém ignoruje lpSetupTemplateName , 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();

Vrácená 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();

Vrácená 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 DoModala po vytvoření objektu dialogového okna. Po volání DoModalvolejte 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;

Vrácená 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;

Vrácená 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;

Vrácená 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;

Vrácená 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;

Vrácená 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.

Vrácená 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.

Vrácená 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.

Viz také

MFC – ukázka WORDPADU
CCommonDialog – třída
Graf hierarchie