Udostępnij za pośrednictwem


Klasa CPageSetupDialog

Hermetyzuje usługi udostępniane przez okno dialogowe Typowe ustawienia strony OLE systemu Windows z dodatkową obsługą ustawiania i modyfikowania marginesów wydruku.

Składnia

class CPageSetupDialog : public CCommonDialog

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CPageSetupDialog::CPageSetupDialog CPageSetupDialog Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CPageSetupDialog::CreatePrinterDC Tworzy kontekst urządzenia do drukowania.
CPageSetupDialog::D oModal Wyświetla okno dialogowe i umożliwia użytkownikowi dokonanie wyboru.
CPageSetupDialog::GetDeviceName Zwraca nazwę urządzenia drukarki.
CPageSetupDialog::GetDevMode Zwraca bieżącą wartość DEVMODE drukarki.
CPageSetupDialog::GetDriverName Zwraca sterownik używany przez drukarkę.
CPageSetupDialog::GetMargins Zwraca bieżące ustawienia marginesu drukarki.
CPageSetupDialog::GetPaperSize Zwraca rozmiar papieru drukarki.
CPageSetupDialog::GetPortName Zwraca nazwę portu wyjściowego.
CPageSetupDialog::OnDrawPage Wywoływana przez platformę w celu renderowania obrazu ekranu drukowanej strony.
CPageSetupDialog::P reDrawPage Wywoływana przez platformę przed renderowaniem obrazu ekranu drukowanej strony.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CPageSetupDialog::m_psd Struktura używana do dostosowywania CPageSetupDialog obiektu.

Uwagi

Ta klasa została zaprojektowana tak, aby odbyła się w oknie dialogowym Konfiguracja wydruku.

Aby użyć CPageSetupDialog obiektu, najpierw utwórz obiekt przy użyciu konstruktora CPageSetupDialog . Po utworzeniu okna dialogowego można ustawić lub zmodyfikować dowolne wartości w elemencie m_psd członkowskim danych, aby zainicjować wartości kontrolek okna dialogowego. Struktura m_psd jest typu PAGESETUPDLG.

Po zainicjowaniu kontrolek okna dialogowego wywołaj DoModal funkcję składową, aby wyświetlić okno dialogowe i zezwolić użytkownikowi na wybieranie opcji drukowania. DoModal zwraca, czy użytkownik wybrał przycisk OK (IDOK) lub Anuluj (IDCANCEL).

Jeśli DoModal funkcja IDOK zwraca wartość IDOK, możesz użyć kilku CPageSetupDialogfunkcji członkowskich lub uzyskać dostęp do m_psd elementu członkowskiego danych, aby pobrać informacje wejściowe przez użytkownika.

Uwaga

Po odrzuceniu wspólnego okna dialogowego Ustawienia strony OLE wszelkie zmiany wprowadzone przez użytkownika nie zostaną zapisane przez platformę. Do samej aplikacji należy zapisanie wszystkich wartości z tego okna dialogowego do lokalizacji stałej, takiej jak składowa dokumentu aplikacji lub klasy aplikacji.

Hierarchia dziedziczenia

Obiekt CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CPageSetupDialog

Wymagania

Nagłówek: afxdlgs.h

CPageSetupDialog::CPageSetupDialog

Wywołaj tę funkcję, aby skonstruować CPageSetupDialog obiekt.

CPageSetupDialog(
    DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
    CWnd* pParentWnd = NULL);

Parametry

dwFlags
Co najmniej jedna flaga, której można użyć do dostosowania ustawień okna dialogowego. Wartości można łączyć przy użyciu operatora bitowego OR. Te wartości mają następujące znaczenie:

  • PSD_DEFAULTMINMARGINS Ustawia minimalną dozwoloną szerokość marginesów strony, która będzie taka sama jak minimalna wartość drukarki. Ta flaga jest ignorowana, jeśli określono również flagi PSD_MARGINS i PSD_MINMARGINS.

  • PSD_INWININIINTLMEASURE Nie zaimplementowano.

  • PSD_MINMARGINS Powoduje, że system używa wartości określonych w elemencie rtMinMargin członkowskim jako minimalnych dozwolonych szerokości dla lewego, górnego, prawego i dolnego marginesu. System uniemożliwia użytkownikowi wprowadzanie szerokości mniejszej niż określona minimalna. Jeśli PSD_MINMARGINS nie zostanie określony, system ustawi minimalną dozwoloną szerokość na dozwolone przez drukarkę.

  • PSD_MARGINS Aktywuje obszar kontroli marginesu.

  • PSD_INTHOUSANDTHSOFINCHES Powoduje, że jednostki okna dialogowego mają być mierzone w 1/1000 cala.

  • PSD_INHUNDREDTHSOFMILLIMETERS Powoduje, że jednostki okna dialogowego mają być mierzone w 1/100 milimetra.

  • PSD_DISABLEMARGINS Wyłącza kontrolki okna dialogowego marginesu.

  • PSD_DISABLEPRINTER Wyłącza przycisk Drukarka.

  • PSD_NOWARNING Uniemożliwia wyświetlanie komunikatu ostrzegawczego, gdy nie ma drukarki domyślnej.

  • PSD_DISABLEORIENTATION Wyłącza kontrolkę okna dialogowego orientacji strony.

  • PSD_RETURNDEFAULT Przyczyny CPageSetupDialog zwracania struktur DEVMODE i DEVNAMES , które są inicjowane dla domyślnej drukarki systemu bez wyświetlania okna dialogowego. Przyjmuje się, że obie hDevNames wartości i hDevMode mają wartość NULL. W przeciwnym razie funkcja zwraca błąd. Jeśli drukarka domyślna systemu jest obsługiwana przez stary sterownik drukarki (starszy niż Windows w wersji 3.0), zwracana hDevMode jest tylko hDevNames wartość NULL.

  • PSD_DISABLEPAPER Wyłącza kontrolkę wyboru papieru.

  • PSD_SHOWHELP Powoduje wyświetlenie przycisku Pomoc. Element hwndOwner członkowski nie może mieć wartości NULL, jeśli określono tę flagę.

  • PSD_ENABLEPAGESETUPHOOK Włącza funkcję haka określoną w pliku lpfnSetupHook.

  • PSD_ENABLEPAGESETUPTEMPLATE Powoduje, że system operacyjny tworzy okno dialogowe przy użyciu okna dialogowego określonego przez hInstance i lpSetupTemplateName.

  • PSD_ENABLEPAGESETUPTEMPLATEHANDLE Wskazuje, że hInstance identyfikuje blok danych zawierający wstępnie załadowany szablon okna dialogowego. System ignoruje lpSetupTemplateName , czy ta flaga jest określona.

  • PSD_ENABLEPAGEPAINTHOOK Włącza funkcję haka określoną w pliku lpfnPagePaintHook.

  • PSD_DISABLEPAGEPAINTING Wyłącza obszar rysowania okna dialogowego.

pParentWnd
Wskaźnik do elementu nadrzędnego lub właściciela okna dialogowego.

Uwagi

Użyj funkcji DoModal, aby wyświetlić okno dialogowe.

Przykład

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

Tworzy kontekst urządzenia drukarki na podstawie struktur DEVMODE i DEVNAMES .

HDC CreatePrinterDC();

Wartość zwracana

Dojmij do nowo utworzonego kontekstu urządzenia drukarki (DC).

CPageSetupDialog::D oModal

Wywołaj tę funkcję, aby wyświetlić okno dialogowe Typowe ustawienia strony OLE systemu Windows i umożliwić użytkownikowi wybranie różnych opcji konfiguracji wydruku, takich jak marginesy drukowania, rozmiar i orientacja papieru oraz drukarki docelowej.

virtual INT_PTR DoModal();

Wartość zwracana

IDOK lub IDCANCEL. Jeśli element IDCANCEL jest zwracany, wywołaj funkcję Windows CommDlgExtendedError , aby ustalić, czy wystąpił błąd.

IDOK i IDCANCEL są stałymi, które wskazują, czy użytkownik wybrał przycisk OK, czy Anuluj.

Uwagi

Ponadto użytkownik może uzyskać dostęp do opcji konfiguracji drukarki, takich jak lokalizacja sieciowa i właściwości specyficzne dla wybranej drukarki.

Jeśli chcesz zainicjować różne opcje okna dialogowego Ustawienia strony, ustawiając elementy członkowskie m_psd struktury, należy to zrobić przed wywołaniem DoModalmetody i po utworzeniu obiektu okna dialogowego. Po wywołaniu DoModalmetody wywołaj inne funkcje członkowskie, aby pobrać ustawienia lub informacje wejściowe przez użytkownika do okna dialogowego.

Jeśli chcesz propagować bieżące ustawienia wprowadzone przez użytkownika, wykonaj wywołanie aplikacji CWinApp::SelectPrinter. Ta funkcja pobiera informacje z obiektu i inicjuje CPageSetupDialog i wybiera nowy kontroler domeny drukarki z odpowiednimi atrybutami.

AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);

Przykład

Zobacz przykład CPageSetupDialog ::CPageSetupDialog.

CPageSetupDialog::GetDeviceName

Wywołaj tę funkcję po DoModal pobraniu nazwy aktualnie wybranej drukarki.

CString GetDeviceName() const;

Wartość zwracana

Nazwa urządzenia używana przez CPageSetupDialog obiekt.

CPageSetupDialog::GetDevMode

Wywołaj tę funkcję po wywołaniu metody DoModal , aby pobrać informacje o kontekście CPageSetupDialog urządzenia drukarki obiektu.

LPDEVMODE GetDevMode() const;

Wartość zwracana

Struktura danych DEVMODE , która zawiera informacje o inicjowaniu urządzenia i środowisku sterownika wydruku. Należy odblokować pamięć pobraną przez tę strukturę za pomocą funkcji GlobalUnlock systemu Windows, która została opisana w zestawie Windows SDK.

CPageSetupDialog::GetDriverName

Wywołaj tę funkcję po wywołaniu funkcji DoModal , aby pobrać nazwę sterownika urządzenia drukarki zdefiniowanej przez system.

CString GetDriverName() const;

Wartość zwracana

Określenie CString nazwy sterownika zdefiniowanego przez system.

Uwagi

Użyj wskaźnika do CString obiektu zwróconego przez GetDriverName jako wartość lpszDriverName wywołania do usługi CDC::CreateDC.

CPageSetupDialog::GetMargins

Wywołaj tę funkcję po wywołaniu , aby DoModal pobrać marginesy sterownika urządzenia drukarki.

void GetMargins(
    LPRECT lpRectMargins,
    LPRECT lpRectMinMargins) const;

Parametry

lpRectMargins
Wskaźnik do struktury RECT lub obiektu CRect , który opisuje (w calach 1/1000 lub 1/100 mm) marginesy wydruku dla aktualnie wybranej drukarki. Przekaż wartość NULL dla tego parametru, jeśli nie interesuje Cię ten prostokąt.

lpRectMinMargins
Wskaźnik do RECT struktury lub CRect obiektu, który opisuje (w 1/1000 cali lub 1/100 mm) minimalne marginesy wydruku dla aktualnie wybranej drukarki. Przekaż wartość NULL dla tego parametru, jeśli nie interesuje Cię ten prostokąt.

CPageSetupDialog::GetPaperSize

Wywołaj tę funkcję, aby pobrać rozmiar papieru wybranego do drukowania.

CSize GetPaperSize() const;

Wartość zwracana

Obiekt CSize zawierający rozmiar papieru (w rozmiarze 1/1000 cali lub 1/100 mm) wybrany do drukowania.

CPageSetupDialog::GetPortName

Wywołaj tę funkcję po wywołaniu metody DoModal , aby pobrać nazwę aktualnie wybranego portu drukarki.

CString GetPortName() const;

Wartość zwracana

Nazwa aktualnie wybranego portu drukarki.

CPageSetupDialog::m_psd

Struktura typu PAGESETUPDLG, której składowe przechowują cechy obiektu okna dialogowego.

PAGESETUPDLG m_psd;

Uwagi

Po utworzeniu CPageSetupDialog obiektu można użyć m_psd polecenia , aby ustawić różne aspekty okna dialogowego przed wywołaniem funkcji składowej DoModal .

Jeśli bezpośrednio zmodyfikujesz element członkowski m_psd danych, zastąpisz wszelkie domyślne zachowanie.

Aby uzyskać więcej informacji na temat struktury PAGESETUPDLG , zobacz Zestaw SDK systemu Windows.

Zobacz przykład CPageSetupDialog ::CPageSetupDialog.

CPageSetupDialog::OnDrawPage

Wywoływana przez strukturę w celu narysowania obrazu ekranu drukowanej strony.

virtual UINT OnDrawPage(
    CDC* pDC,
    UINT nMessage,
    LPRECT lpRect);

Parametry

PDC
Wskaźnik do kontekstu urządzenia drukarki.

nMessage
Określa komunikat wskazujący obszar aktualnie rysowanej strony. Może być jednym z następujących elementów:

  • WM_PSD_FULLPAGERECT Obszar całej strony.

  • WM_PSD_MINMARGINRECT bieżące marginesy minimalne.

  • WM_PSD_MARGINRECT bieżące marginesy.

  • WM_PSD_GREEKTEXTRECT Zawartość strony.

  • WM_PSD_ENVSTAMPRECT Obszar zarezerwowany dla reprezentacji znaczka pocztowego.

  • WM_PSD_YAFULLPAGERECT obszar dla reprezentacji adresu zwrotnego. Ten obszar rozciąga się na krawędzie obszaru strony przykładowej.

lpRect
Wskaźnik do obiektu CRect lub RECT zawierającego współrzędne obszaru rysunku.

Wartość zwracana

Wartość niezerowa, jeśli jest obsługiwana; w przeciwnym razie 0.

Uwagi

Ten obraz jest następnie wyświetlany w ramach wspólnego okna dialogowego Ustawienia strony OLE. Domyślna implementacja rysuje obraz strony tekstu.

Zastąpi tę funkcję, aby dostosować rysunek określonego obszaru obrazu lub całego obrazu. Można to zrobić przy użyciu switch instrukcji z instrukcjami case sprawdzającymi wartość nMessage. Aby na przykład dostosować renderowanie zawartości obrazu strony, możesz użyć następującego przykładowego kodu:

switch (nMessage)
{
case WM_PSD_GREEKTEXTRECT:
   DrawMyImage(pDC, lpRect);    //draws my special graphic
   return 1;
default:
   return CPageSetupDialog::OnDrawPage(pDC, nMessage, lpRect);
}

Należy pamiętać, że nie trzeba obsługiwać każdego przypadku nMessage. Możesz obsłużyć jeden składnik obrazu, kilka składników obrazu lub cały obszar.

CPageSetupDialog::P reDrawPage

Wywoływana przez platformę przed rysunkiem obrazu ekranu drukowanej strony.

virtual UINT PreDrawPage(
    WORD wPaper,
    WORD wFlags,
    LPPAGESETUPDLG pPSD);

Parametry

wPaper
Określa wartość wskazującą rozmiar papieru. Ta wartość może być jedną z wartości DMPAPER_ wymienionych w opisie struktury DEVMODE .

opóźnienia wFlags
Wskazuje orientację papieru lub koperty i określa, czy drukarka jest dot-matrix lub HPPCL (Hewlett Packard Printer Control Language) urządzenia. Ten parametr może mieć jedną z następujących wartości:

  • 0x001 Papier w trybie poziomym (macierz kropkowa)

  • 0x003 Papier w trybie poziomym (HPPCL)

  • 0x005 Papier w trybie pionowym (macierz kropkowa)

  • 0x007 Papier w trybie pionowym (HPPCL)

  • 0x00b Koperta w trybie poziomym (HPPCL)

  • 0x00d Koperta w trybie pionowym (macierz kropkowa)

  • 0x019 Koperta w trybie poziomym (macierz kropkowa)

  • 0x01f Koperta w trybie pionowym (macierz kropkowa)

PPSD
Wskaźnik do PAGESETUPDLG struktury. Aby uzyskać więcej informacji na temat PAGESETUPDLG, zobacz Zestaw SDK systemu Windows.

Wartość zwracana

Wartość niezerowa, jeśli jest obsługiwana; w przeciwnym razie 0.

Uwagi

Zastąpij tę funkcję, aby dostosować rysunek obrazu. Jeśli zastąpisz tę funkcję i zwrócisz wartość TRUE, musisz narysować cały obraz. Jeśli zastąpisz tę funkcję i zwrócisz wartość FALSE, cały obraz domyślny zostanie narysowany przez strukturę.

Zobacz też

Przykładowy program WORDPAD MFC
Klasa CCommonDialog
Wykres hierarchii