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 CPageSetupDialog
funkcji 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
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 obiehDevNames
wartości ihDevMode
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), zwracanahDevMode
jest tylkohDevNames
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
ilpSetupTemplateName
.PSD_ENABLEPAGESETUPTEMPLATEHANDLE Wskazuje, że
hInstance
identyfikuje blok danych zawierający wstępnie załadowany szablon okna dialogowego. System ignorujelpSetupTemplateName
, 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 DoModal
metody i po utworzeniu obiektu okna dialogowego. Po wywołaniu DoModal
metody 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