CPrintDialog
Klasa
Hermetyzuje usługi udostępniane przez wspólne okno dialogowe systemu Windows do drukowania.
Składnia
class CPrintDialog : public CCommonDialog
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CPrintDialog::CPrintDialog |
CPrintDialog Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CPrintDialog::CreatePrinterDC |
Tworzy kontekst urządzenia drukarki bez wyświetlania okna dialogowego Drukowanie. |
CPrintDialog::DoModal |
Wyświetla okno dialogowe i umożliwia użytkownikowi dokonanie wyboru. |
CPrintDialog::GetCopies |
Pobiera żądaną liczbę kopii. |
CPrintDialog::GetDefaults |
Pobiera wartości domyślne urządzenia bez wyświetlania okna dialogowego. |
CPrintDialog::GetDeviceName |
Pobiera nazwę aktualnie wybranego urządzenia drukarki. |
CPrintDialog::GetDevMode |
DEVMODE Pobiera strukturę. |
CPrintDialog::GetDriverName |
Pobiera nazwę aktualnie wybranego sterownika drukarki. |
CPrintDialog::GetFromPage |
Pobiera stronę początkową zakresu wydruku. |
CPrintDialog::GetPortName |
Pobiera nazwę aktualnie wybranego portu drukarki. |
CPrintDialog::GetPrinterDC |
Pobiera uchwyt do kontekstu urządzenia drukarki. |
CPrintDialog::GetToPage |
Pobiera stronę końcową zakresu wydruku. |
CPrintDialog::PrintAll |
Określa, czy mają być drukowane wszystkie strony dokumentu. |
CPrintDialog::PrintCollate |
Określa, czy są żądane sortowanie kopii. |
CPrintDialog::PrintRange |
Określa, czy wyświetlać tylko określony zakres stron. |
CPrintDialog::PrintSelection |
Określa, czy mają być drukowane tylko aktualnie wybrane elementy. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CPrintDialog::m_pd |
Struktura używana do dostosowywania CPrintDialog obiektu. |
Uwagi
Typowe okna dialogowe drukowania umożliwiają łatwe implementowanie okien dialogowych Ustawienia drukowania i drukowania w sposób zgodny ze standardami systemu Windows.
Uwaga
Klasa CPrintDialogEx
hermetyzuje usługi udostępniane przez arkusz właściwości Windows Print. Aby uzyskać więcej informacji, zobacz CPrintDialogEx
omówienie.
CPrintDialog
Funkcjonalność jest zastępowana przez CPageSetupDialog
funkcję , która została zaprojektowana w celu zapewnienia wspólnego okna dialogowego zarówno dla konfiguracji wydruku, jak i konfiguracji strony.
Możesz polegać na strukturze do obsługi wielu aspektów procesu drukowania dla aplikacji. W takim przypadku platforma automatycznie wyświetla typowe okno dialogowe systemu Windows do drukowania. Możesz również mieć platformę do obsługi drukowania dla aplikacji, ale zastąpić wspólne okno dialogowe Drukowanie własnym okno dialogowe drukowania. Aby uzyskać więcej informacji na temat używania platformy do obsługi zadań drukowania, zobacz artykuł Drukowanie.
Jeśli chcesz, aby aplikacja obsługiwała drukowanie bez udziału platformy, możesz użyć CPrintDialog
klasy "as is" z podanym konstruktorem lub utworzyć własną klasę okna dialogowego z CPrintDialog
klasy i napisać konstruktor zgodnie z potrzebami. W obu przypadkach te okna dialogowe będą zachowywać się jak standardowe okna dialogowe MFC, ponieważ pochodzą one z klasy CCommonDialog
.
Aby użyć CPrintDialog
obiektu, najpierw utwórz obiekt przy użyciu konstruktora CPrintDialog
. Po utworzeniu okna dialogowego można ustawić lub zmodyfikować dowolne wartości w m_pd
strukturze, aby zainicjować wartości kontrolek okna dialogowego. Struktura m_pd
jest typu PRINTDLG
. Aby uzyskać więcej informacji na temat tej struktury, zobacz Zestaw WINDOWS SDK.
Jeśli nie podasz własnych uchwytów m_pd
dla hDevMode
elementów i hDevNames
, pamiętaj, aby wywołać funkcję GlobalFree
systemu Windows dla tych dojść po zakończeniu pracy z okna dialogowego. W przypadku korzystania z implementacji instalatora wydruku platformy dostarczonej przez CWinApp::OnFilePrintSetup
program nie trzeba zwalniać tych dojść. Uchwyty są obsługiwane przez CWinApp
i są zwalniane w CWinApp
destruktora 's. Należy zwolnić te dojścia tylko w przypadku korzystania z CPrintDialog
autonomicznego.
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 zwraca IDOK
wartość , możesz użyć jednej z CPrintDialog
funkcji członkowskich, aby pobrać informacje wejściowe przez użytkownika.
Funkcja CPrintDialog::GetDefaults
składowa jest przydatna do pobierania bieżących ustawień domyślnych drukarki bez wyświetlania okna dialogowego. Ta funkcja składowa nie wymaga interakcji użytkownika.
Za pomocą funkcji systemu Windows CommDlgExtendedError
można określić, czy wystąpił błąd podczas inicjowania okna dialogowego i dowiedzieć się więcej o błędzie. Aby uzyskać więcej informacji na temat tej funkcji, zobacz Zestaw Windows SDK.
CPrintDialog
korzysta z pliku dostarczanego COMMDLG.DLL
z systemem Windows w wersji 3.1 lub nowszej.
Aby dostosować okno dialogowe, utwórz klasę z CPrintDialog
klasy , podaj niestandardowy szablon okna dialogowego i dodaj mapę komunikatów w celu przetworzenia komunikatów powiadomień z rozszerzonych kontrolek. Wszystkie nieprzetworzone komunikaty powinny być przekazywane do klasy bazowej. Dostosowywanie funkcji haka nie jest wymagane.
Aby przetworzyć ten sam komunikat w różny sposób w zależności od tego, czy okno dialogowe to Print or Print Setup, należy utworzyć klasę dla każdego okna dialogowego. Należy również zastąpić funkcję systemu Windows AttachOnSetup
, która obsługuje tworzenie nowego okna dialogowego po wybraniu przycisku Ustawienia drukowania w oknie dialogowym Drukowanie.
Aby uzyskać więcej informacji na temat korzystania z programu CPrintDialog
, zobacz Typowe klasy okien dialogowych.
Hierarchia dziedziczenia
CPrintDialog
Wymagania
Nagłówek: afxdlgs.h
CPrintDialog::CPrintDialog
Tworzy obiekt okna dialogowego Print lub Print Setup.
CPrintDialog(
BOOL bPrintSetupOnly,
DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
CWnd* pParentWnd = NULL);
Parametry
bPrintSetupOnly
Określa, czy jest wyświetlane standardowe okno dialogowe Drukowania systemu Windows lub Okno dialogowe Ustawienia wydruku. Ustaw ten parametr na wartość , aby wyświetlić TRUE
standardowe okno dialogowe Ustawienia drukowania systemu Windows. Ustaw go na wartość , aby FALSE
wyświetlić okno dialogowe Drukowanie systemu Windows. Jeśli bPrintSetupOnly
jest FALSE
to , przycisk Opcji Ustawienia wydruku jest nadal wyświetlany w oknie dialogowym Drukowanie.
dwFlags
Co najmniej jedna flaga, której można użyć do dostosowania ustawień okna dialogowego, połączonego za pomocą operatora bitowego OR. Na przykład flaga PD_ALLPAGES
ustawia domyślny zakres wydruku na wszystkie strony dokumentu. PRINTDLG
Aby uzyskać więcej informacji na temat tych flag, zobacz strukturę zestawu Windows SDK.
pParentWnd
Wskaźnik do okna nadrzędnego lub okna właściciela okna dialogowego.
Uwagi
Ta funkcja składowa konstruuje tylko obiekt . Użyj funkcji składowej DoModal
, aby wyświetlić okno dialogowe.
Należy pamiętać, że podczas wywoływania konstruktora z ustawioną bPrintSetupOnly
wartością FALSE
flaga PD_RETURNDC
jest używana automatycznie. Po wywołaniu metody DoModal
, GetDefaults
lub GetPrinterDC
kontroler domeny drukarki zostanie zwrócony w .m_pd.hDC
Ten kontroler domeny musi zostać zwolniony za pomocą wywołania DeleteDC
przez obiekt wywołujący .CPrintDialog
Przykład
// 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
Tworzy kontekst urządzenia drukarki (DC) na podstawie DEVMODE
struktur i DEVNAMES
.
HDC CreatePrinterDC();
Wartość zwracana
Dojmij do nowo utworzonego kontekstu urządzenia drukarki.
Uwagi
Ten kontroler domeny przyjmuje się, że jest bieżącym kontrolerem domeny drukarki, a wszystkie inne wcześniej uzyskane kontrolery domeny drukarki muszą zostać usunięte przez użytkownika. Tę funkcję można wywołać, a wynikowy kontroler domeny jest używany bez wyświetlania okna dialogowego Drukowanie.
Przykład
// 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
Wyświetla typowe okno dialogowe drukowania systemu Windows i umożliwia użytkownikowi wybranie różnych opcji drukowania, takich jak liczba kopii, zakres stron i czy kopie powinny być sortowane.
virtual INT_PTR DoModal();
Wartość zwracana
Usługa IDOK
lub IDCANCEL
. Jeśli IDCANCEL
jest zwracana, wywołaj funkcję systemu Windows CommDlgExtendedError
, aby określić, czy wystąpił błąd.
IDOK
i IDCANCEL
są stałymi, które wskazują, czy użytkownik wybrał przycisk OK , czy Anuluj .
Uwagi
Jeśli chcesz zainicjować różne opcje okna dialogowego drukowania, ustawiając elementy członkowskie m_pd
struktury, należy to zrobić przed wywołaniem DoModal
metody , ale po utworzeniu obiektu okna dialogowego.
Po wywołaniu DoModal
metody można wywołać inne funkcje członkowskie, aby pobrać ustawienia lub informacje wejściowe przez użytkownika w oknie dialogowym.
Należy pamiętać, że podczas wywoływania konstruktora z ustawioną bPrintSetupOnly
wartością FALSE
flaga PD_RETURNDC
jest używana automatycznie. Po wywołaniu metody DoModal
, GetDefaults
lub GetPrinterDC
kontroler domeny drukarki zostanie zwrócony w .m_pd.hDC
Ten kontroler domeny musi zostać zwolniony za pomocą wywołania DeleteDC
przez obiekt wywołujący .CPrintDialog
Przykład
Zobacz przykład dla elementu CPrintDialog::CreatePrinterDC
.
CPrintDialog::GetCopies
Pobiera żądaną liczbę kopii.
int GetCopies() const;
Wartość zwracana
Liczba żądanych kopii.
Uwagi
Wywołaj tę funkcję po wywołaniu metody DoModal
, aby pobrać żądaną liczbę kopii.
Przykład
Zobacz przykład dla elementu CPrintDialog::PrintCollate
.
CPrintDialog::GetDefaults
Pobiera domyślne ustawienia drukarki domyślnej urządzenia bez wyświetlania okna dialogowego.
BOOL GetDefaults();
Wartość zwracana
Nonzero, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Pobrane wartości są umieszczane w m_pd
strukturze.
W niektórych przypadkach wywołanie tej funkcji wywoła konstruktor dla parametru z ustawioną wartością FALSE
bPrintSetupOnly
.CPrintDialog
W takich przypadkach kontroler domeny drukarki i hDevNames
hDevMode
(dwa uchwyty znajdujące się w elemencie m_pd
danych) są automatycznie przydzielane.
Jeśli konstruktor dla CPrintDialog
elementu został wywołany z ustawioną wartością FALSE
bPrintSetupOnly
, ta funkcja nie będzie zwracać hDevNames
ani hDevMode
znajdować się w m_pd.hDevNames
elementach i m_pd.hDevMode
) do elementu wywołującego, ale również zwróci kontroler domeny drukarki w systemie m_pd.hDC
. Obowiązkiem obiektu wywołującego jest usunięcie kontrolera domeny drukarki i wywołanie funkcji systemu Windows GlobalFree
na uchwytach po zakończeniu pracy z obiektem CPrintDialog
.
Przykład
Ten fragment kodu pobiera domyślny kontekst urządzenia drukarki i raportuje użytkownikowi rozdzielczość drukarki w kropkach na cal. (Ten atrybut możliwości drukarki jest często określany 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
Pobiera nazwę aktualnie wybranego urządzenia drukarki.
CString GetDeviceName() const;
Wartość zwracana
Nazwa aktualnie wybranej drukarki.
Uwagi
Wywołaj tę funkcję po wywołaniu metody DoModal
, aby pobrać nazwę aktualnie wybranej drukarki lub po wywołaniu metody GetDefaults
w celu pobrania bieżących ustawień domyślnych drukarki domyślnej urządzenia. Użyj wskaźnika do CString
obiektu zwróconego przez GetDeviceName
wartość lpszDeviceName
w wywołaniu metody CDC::CreateDC
.
Przykład
Ten fragment kodu przedstawia domyślną nazwę drukarki użytkownika i port, z który jest połączony, wraz z nazwą buforu używaną przez drukarkę. Kod może wyświetlić okno komunikatu z komunikatem "Domyślna drukarka to HP LaserJet IIIP w \\server\share przy użyciu puli winspool"., na przykład.
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
DEVMODE
Pobiera strukturę.
LPDEVMODE GetDevMode() const;
Wartość zwracana
Struktura DEVMODE
danych zawierająca informacje o inicjowaniu urządzenia i środowisku sterownika wydruku. Należy odblokować pamięć pobraną przez tę strukturę za pomocą funkcji systemu Windows GlobalUnlock
, która została opisana w zestawie WINDOWS SDK.
Uwagi
Wywołaj tę funkcję po wywołaniu DoModal
lub GetDefaults
pobrać informacje o urządzeniu do drukowania.
Przykład
Zobacz przykład dla elementu CPrintDialog::PrintCollate
.
CPrintDialog::GetDriverName
Pobiera nazwę aktualnie wybranego sterownika drukarki.
CString GetDriverName() const;
Wartość zwracana
Określenie CString
nazwy sterownika zdefiniowanego przez system.
Uwagi
Wywołaj tę funkcję po wywołaniu DoModal
metody lub GetDefaults
pobierz nazwę sterownika urządzenia drukarki zdefiniowanej przez system. Użyj wskaźnika do CString
obiektu zwróconego przez GetDriverName
wartość lpszDriverName
w wywołaniu metody CDC::CreateDC
.
Przykład
Zobacz przykład dla elementu CPrintDialog::GetDeviceName
.
CPrintDialog::GetFromPage
Pobiera stronę początkową zakresu wydruku.
int GetFromPage() const;
Wartość zwracana
Numer strony początkowej w zakresie stron do wydrukowania.
Uwagi
Wywołaj tę funkcję po wywołaniu metody DoModal
, aby pobrać numer strony początkowej w zakresie stron do wydrukowania.
Przykład
Zobacz przykład dla elementu CPrintDialog::m_pd
.
CPrintDialog::GetPortName
Pobiera nazwę aktualnie wybranego portu drukarki.
CString GetPortName() const;
Wartość zwracana
Nazwa aktualnie wybranego portu drukarki.
Uwagi
Wywołaj tę funkcję po wywołaniu DoModal
metody lub GetDefaults
pobierz nazwę aktualnie wybranego portu drukarki.
Przykład
Zobacz przykład CPrintDialog::GetDeviceName.
CPrintDialog::GetPrinterDC
Pobiera uchwyt do kontekstu urządzenia drukarki.
HDC GetPrinterDC() const;
Wartość zwracana
Uchwyt do kontekstu urządzenia drukarki, jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
bPrintSetupOnly
Jeśli parametr CPrintDialog
konstruktora był FALSE
(wskazujący, że jest wyświetlane okno dialogowe Drukowanie), zwraca GetPrinterDC
uchwyt do kontekstu urządzenia drukarki. Po zakończeniu korzystania z niej należy wywołać funkcję systemu Windows DeleteDC
, aby usunąć kontekst urządzenia.
Przykład
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
Pobiera stronę końcową zakresu wydruku.
int GetToPage() const;
Wartość zwracana
Numer strony końcowej w zakresie stron do wydrukowania.
Uwagi
Wywołaj tę funkcję po wywołaniu metody DoModal
w celu pobrania końcowego numeru strony w zakresie stron do wydrukowania.
Przykład
Zobacz przykład dla elementu CPrintDialog::m_pd
.
CPrintDialog::m_pd
Struktura, której elementy członkowskie przechowują cechy obiektu okna dialogowego.
PRINTDLG& m_pd;
Uwagi
Po utworzeniu CPrintDialog
obiektu można użyć m_pd
polecenia , aby ustawić różne aspekty okna dialogowego przed wywołaniem funkcji składowej DoModal
. Aby uzyskać więcej informacji na m_pd
temat struktury, zobacz PRINTDLG
w zestawie Windows SDK.
Jeśli bezpośrednio zmodyfikujesz element członkowski m_pd
danych, zastąpisz wszelkie domyślne zachowanie.
Przykład
// 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
Określa, czy mają być drukowane wszystkie strony dokumentu.
BOOL PrintAll() const;
Wartość zwracana
Niezerowe, jeśli wszystkie strony w dokumencie mają być drukowane; w przeciwnym razie 0.
Uwagi
Wywołaj tę funkcję po wywołaniu metody DoModal
, aby określić, czy wydrukować wszystkie strony w dokumencie.
Przykład
Zobacz przykład dla elementu CPrintDialog::m_pd
.
CPrintDialog::PrintCollate
Określa, czy są żądane sortowanie kopii.
BOOL PrintCollate() const;
Wartość zwracana
Niezero, jeśli użytkownik wybiera pole wyboru sortowania w oknie dialogowym; w przeciwnym razie 0.
Uwagi
Wywołaj tę funkcję po wywołaniu metody , DoModal
aby określić, czy drukarka powinna sortować wszystkie drukowane kopie dokumentu.
Przykład
// 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
Określa, czy wyświetlać tylko określony zakres stron.
BOOL PrintRange() const;
Wartość zwracana
Niezerowe, jeśli ma być wydrukowany tylko zakres stron w dokumencie; w przeciwnym razie 0.
Uwagi
Wywołaj tę funkcję po wywołaniu metody DoModal
, aby określić, czy wydrukować tylko zakres stron w dokumencie.
Przykład
Zobacz przykład dla elementu CPrintDialog::m_pd
.
CPrintDialog::PrintSelection
Określa, czy mają być drukowane tylko aktualnie wybrane elementy.
BOOL PrintSelection() const;
Wartość zwracana
Niezerowe, jeśli tylko wybrane elementy mają być drukowane; w przeciwnym razie 0.
Uwagi
Wywołaj tę funkcję po wywołaniu metody DoModal
, aby określić, czy wydrukować tylko aktualnie wybrane elementy.
Przykład
Zobacz przykład dla elementu CPrintDialog::m_pd
.
Zobacz też
Przykład MFC DIBLOOK
CCommonDialog
Klasa
Wykres hierarchii
CPrintInfo
Struktura