CPrintDialog
수업
Windows 공용 대화 상자에서 인쇄용으로 제공하는 서비스를 캡슐화합니다.
구문
class CPrintDialog : public CCommonDialog
멤버
공용 생성자
속성 | 설명 |
---|---|
CPrintDialog::CPrintDialog |
CPrintDialog 개체를 생성합니다. |
공용 메서드
이름 | 설명 |
---|---|
CPrintDialog::CreatePrinterDC |
인쇄 대화 상자를 표시하지 않고 프린터 디바이스 컨텍스트를 만듭니다. |
CPrintDialog::DoModal |
대화 상자를 표시하고 사용자가 선택할 수 있도록 합니다. |
CPrintDialog::GetCopies |
요청된 복사본 수를 검색합니다. |
CPrintDialog::GetDefaults |
대화 상자를 표시하지 않고 디바이스 기본값을 검색합니다. |
CPrintDialog::GetDeviceName |
현재 선택한 프린터 디바이스의 이름을 검색합니다. |
CPrintDialog::GetDevMode |
구조를 검색 DEVMODE 합니다. |
CPrintDialog::GetDriverName |
현재 선택한 프린터 드라이버의 이름을 검색합니다. |
CPrintDialog::GetFromPage |
인쇄 범위의 시작 페이지를 검색합니다. |
CPrintDialog::GetPortName |
현재 선택한 프린터 포트의 이름을 검색합니다. |
CPrintDialog::GetPrinterDC |
프린터 디바이스 컨텍스트에 대한 핸들을 검색합니다. |
CPrintDialog::GetToPage |
인쇄 범위의 끝 페이지를 검색합니다. |
CPrintDialog::PrintAll |
문서의 모든 페이지를 인쇄할지 여부를 결정합니다. |
CPrintDialog::PrintCollate |
데이터 정렬된 복사본이 요청되는지 여부를 결정합니다. |
CPrintDialog::PrintRange |
지정된 페이지 범위만 인쇄할지 여부를 결정합니다. |
CPrintDialog::PrintSelection |
현재 선택한 항목만 인쇄할지 여부를 결정합니다. |
공용 데이터 멤버
속성 | 설명 |
---|---|
CPrintDialog::m_pd |
개체를 사용자 지정하는 데 사용되는 구조체입니다 CPrintDialog . |
설명
일반적인 인쇄 대화 상자는 Windows 표준과 일치하는 방식으로 인쇄 및 인쇄 설정 대화 상자를 쉽게 구현할 수 있는 방법을 제공합니다.
참고 항목
이 클래스는 CPrintDialogEx
Windows Print 속성 시트에서 제공하는 서비스를 캡슐화합니다. 자세한 내용은 개요를 참조하세요 CPrintDialogEx
.
CPrintDialog
'의 기능은 인쇄 설정과 페이지 설정 모두에 CPageSetupDialog
대한 공통 대화 상자를 제공하도록 설계된 기능으로 대체됩니다.
프레임워크를 사용하여 애플리케이션에 대한 인쇄 프로세스의 여러 측면을 처리할 수 있습니다. 이 경우 프레임워크는 인쇄를 위한 Windows 일반 대화 상자를 자동으로 표시합니다. 또한 애플리케이션에 대한 프레임워크 핸들 인쇄를 사용할 수 있지만 사용자 고유의 인쇄 대화 상자를 사용하여 일반적인 인쇄 대화 상자를 재정의할 수도 있습니다. 프레임워크를 사용하여 인쇄 작업을 처리하는 방법에 대한 자세한 내용은 인쇄 문서를 참조하세요.
애플리케이션이 프레임워크의 개입 없이 인쇄를 처리하도록 하려면 제공된 생성자와 함께 "있는 그대로" 클래스를 사용 CPrintDialog
하거나 사용자 고유의 대화 클래스를 CPrintDialog
파생시키고 필요에 맞게 생성자를 작성할 수 있습니다. 두 경우 모두 이러한 대화 상자는 클래스 CCommonDialog
에서 파생되므로 표준 MFC 대화 상자처럼 동작합니다.
개체를 CPrintDialog
사용하려면 먼저 생성자를 사용하여 개체를 CPrintDialog
만듭니다. 대화 상자가 생성되면 구조체의 모든 값을 m_pd
설정하거나 수정하여 대화 상자 컨트롤의 값을 초기화할 수 있습니다. 구조체 m_pd
는 형식 PRINTDLG
입니다. 이 구조에 대한 자세한 내용은 Windows SDK를 참조하세요.
사용자 고유의 핸들과 hDevNames
멤버에 대한 hDevMode
핸들을 m_pd
제공하지 않는 경우 대화 상자가 완료되면 이러한 핸들에 대해 Windows 함수 GlobalFree
를 호출해야 합니다. 프레임워크에서 제공하는 인쇄 설정 구현을 CWinApp::OnFilePrintSetup
사용하는 경우 이러한 핸들을 해제할 필요가 없습니다. 핸들은 유지 관리되며 CWinApp
'의 소멸자에서 CWinApp
해제됩니다. 독립 실행형을 사용하는 CPrintDialog
경우에만 이러한 핸들을 해제해야 합니다.
대화 상자 컨트롤을 초기화한 후 멤버 함수를 DoModal
호출하여 대화 상자를 표시하고 사용자가 인쇄 옵션을 선택할 수 있도록 합니다. DoModal
는 사용자가 확인() 또는 취소IDCANCEL
(IDOK
) 단추를 선택했는지 여부를 반환합니다.
반환IDOK
되는 경우 DoModal
사용자의 멤버 함수 중 CPrintDialog
하나를 사용하여 사용자의 정보 입력을 검색할 수 있습니다.
CPrintDialog::GetDefaults
멤버 함수는 대화 상자를 표시하지 않고 현재 프린터 기본값을 검색하는 데 유용합니다. 이 멤버 함수는 사용자 상호 작용이 필요하지 않습니다.
Windows CommDlgExtendedError
함수를 사용하여 대화 상자를 초기화하는 동안 오류가 발생했는지 여부를 확인하고 오류에 대해 자세히 알아볼 수 있습니다. 이 함수에 대한 자세한 내용은 Windows SDK를 참조하세요.
CPrintDialog
는 Windows 버전 3.1 이상과 함께 제공되는 파일을 사용합니다 COMMDLG.DLL
.
대화 상자를 사용자 지정하려면 클래스 CPrintDialog
를 파생시키고, 사용자 지정 대화 템플릿을 제공하고, 확장된 컨트롤에서 알림 메시지를 처리하는 메시지 맵을 추가합니다. 처리되지 않은 모든 메시지는 기본 클래스에 전달되어야 합니다. 후크 함수를 사용자 지정할 필요는 없습니다.
대화 상자가 인쇄 또는 인쇄 설정인지에 따라 동일한 메시지를 다르게 처리하려면 각 대화 상자에 대한 클래스를 파생시켜야 합니다. 인쇄 대화 상자에서 인쇄 설정 단추를 선택할 때 새 대화 상자 만들기를 처리하는 Windows AttachOnSetup
함수도 재정의해야 합니다.
사용에 CPrintDialog
대한 자세한 내용은 일반 대화 상자 클래스를 참조 하세요.
상속 계층 구조
CPrintDialog
요구 사항
머리글: afxdlgs.h
CPrintDialog::CPrintDialog
Windows 인쇄 또는 인쇄 설정 대화 상자 개체를 생성합니다.
CPrintDialog(
BOOL bPrintSetupOnly,
DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
CWnd* pParentWnd = NULL);
매개 변수
bPrintSetupOnly
표준 Windows 인쇄 대화 상자 또는 인쇄 설정 대화 상자가 표시되는지 여부를 지정합니다. 표준 Windows 인쇄 설정 대화 상자를 표시하려면 TRUE
이 매개 변수를 설정합니다. Windows 인쇄 대화 상자를 표시하도록 FALSE
설정합니다. 있는 FALSE
경우 bPrintSetupOnly
인쇄 설정 옵션 단추가 인쇄 대화 상자에 계속 표시됩니다.
dwFlags
비트 OR 연산자를 사용하여 결합된 대화 상자의 설정을 사용자 지정하는 데 사용할 수 있는 플래그가 하나 이상 있습니다. 예를 들어 플래그는 PD_ALLPAGES
기본 인쇄 범위를 문서의 모든 페이지로 설정합니다. PRINTDLG
이러한 플래그에 대한 자세한 내용은 Windows SDK의 구조를 참조하세요.
pParentWnd
대화 상자의 부모 또는 소유자 창에 대한 포인터입니다.
설명
이 멤버 함수는 개체만 생성합니다. 멤버 함수를 DoModal
사용하여 대화 상자를 표시합니다.
설정된 FALSE
생성자를 bPrintSetupOnly
호출하면 플래그가 PD_RETURNDC
자동으로 사용됩니다. 를 호출DoModal
GetDefaults
한 GetPrinterDC
후 프린터 DC가 반환m_pd.hDC
됩니다. 이 DC는 호출자가 CPrintDialog
호출하여 DeleteDC
해제해야 합니다.
예시
// 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
및 DEVNAMES
구조체에서 프린터 디바이스 컨텍스트(DC)를 DEVMODE
만듭니다.
HDC CreatePrinterDC();
Return Value
새로 만든 프린터 디바이스 컨텍스트에 대한 핸들입니다.
설명
이 DC는 현재 프린터 DC로 간주되며 이전에 가져온 다른 프린터 DC는 사용자가 삭제해야 합니다. 인쇄 대화 상자를 표시하지 않고도 이 함수를 호출하고 결과 DC를 사용할 수 있습니다.
예시
// 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
Windows 일반 인쇄 대화 상자를 표시하고 사용자가 복사본 수, 페이지 범위 및 복사본을 정렬해야 하는지 여부와 같은 다양한 인쇄 옵션을 선택할 수 있습니다.
virtual INT_PTR DoModal();
Return Value
IDOK
또는 IDCANCEL
. 반환되는 경우 IDCANCEL
Windows CommDlgExtendedError
함수를 호출하여 오류가 발생했는지 여부를 확인합니다.
IDOK
사용자가 IDCANCEL
확인 또는 취소 단추를 선택했는지 여부를 나타내는 상수입니다.
설명
구조체의 m_pd
멤버를 설정하여 다양한 인쇄 대화 상자를 초기화하려면 호출 DoModal
하기 전에 대화 상자 개체를 생성한 후에 이 작업을 수행해야 합니다.
호출 DoModal
한 후 다른 멤버 함수를 호출하여 사용자가 대화 상자에 입력한 설정 또는 정보를 검색할 수 있습니다.
설정된 FALSE
생성자를 bPrintSetupOnly
호출하면 플래그가 PD_RETURNDC
자동으로 사용됩니다. 를 호출DoModal
GetDefaults
한 GetPrinterDC
후 프린터 DC가 반환m_pd.hDC
됩니다. 이 DC는 호출자가 CPrintDialog
호출하여 DeleteDC
해제해야 합니다.
예시
CPrintDialog::CreatePrinterDC
에 대한 예를 참조하세요.
CPrintDialog::GetCopies
요청된 복사본 수를 검색합니다.
int GetCopies() const;
Return Value
요청된 복사본 수입니다.
설명
호출한 후 이 함수를 호출 DoModal
하여 요청된 복사본 수를 검색합니다.
예시
CPrintDialog::PrintCollate
에 대한 예를 참조하세요.
CPrintDialog::GetDefaults
대화 상자를 표시하지 않고 기본 프린터의 디바이스 기본값을 검색합니다.
BOOL GetDefaults();
Return Value
함수가 성공한 경우 0이 아닌 경우 그렇지 않으면 0입니다.
설명
검색된 값은 구조체에 m_pd
배치됩니다.
경우에 따라 이 함수에 대한 호출은 set to로 설정된 생성자를 bPrintSetupOnly
CPrintDialog
호출합니다.FALSE
이러한 경우 프린터 DC 및 hDevNames
hDevMode
(데이터 멤버에 있는 m_pd
두 개의 핸들) 자동으로 할당 됩니다.
set를 사용하여 생성자를 CPrintDialog
호출 bPrintSetupOnly
FALSE
한 경우 이 함수는 호출자에게 반환 hDevNames
및 hDevMode
m_pd.hDevNames
위치 및 m_pd.hDevMode
)뿐만 아니라 프린터 DC m_pd.hDC
도 반환합니다. 개체를 완료하면 호출자가 프린터 DC를 삭제하고 핸들에서 Windows GlobalFree
함수를 CPrintDialog
호출해야 합니다.
예시
이 코드 조각은 기본 프린터의 디바이스 컨텍스트를 가져오고 인치당 점으로 프린터의 해상도를 사용자에게 보고합니다. (프린터 기능의 이 특성을 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
현재 선택한 프린터 디바이스의 이름을 검색합니다.
CString GetDeviceName() const;
Return Value
현재 선택한 프린터의 이름입니다.
설명
호출한 후 DoModal
현재 선택한 프린터의 이름을 검색하거나 호출한 후 이 함수를 호출 GetDefaults
하여 기본 프린터의 현재 디바이스 기본값을 검색합니다. 호출CDC::CreateDC
에서 반환된 GetDeviceName
개체에 CString
대한 포인터를 값 lpszDeviceName
으로 사용합니다.
예시
이 코드 조각은 사용자의 기본 프린터 이름 및 연결된 포트와 프린터에서 사용하는 스풀러 이름을 보여줍니다. 예를 들어 코드에는 "기본 프린터는 winspool을 사용하여 \\server\share의 HP LaserJet IIIP입니다."라는 메시지 상자가 표시될 수 있습니다.
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
합니다.
LPDEVMODE GetDevMode() const;
Return Value
DEVMODE
인쇄 드라이버의 디바이스 초기화 및 환경에 대한 정보를 포함하는 데이터 구조입니다. Windows SDK에 설명된 Windows GlobalUnlock
함수를 사용하여 이 구조에서 가져온 메모리의 잠금을 해제해야 합니다.
설명
호출 후 이 함수를 호출 DoModal
하거나 GetDefaults
인쇄 장치에 대한 정보를 검색합니다.
예시
CPrintDialog::PrintCollate
에 대한 예를 참조하세요.
CPrintDialog::GetDriverName
현재 선택한 프린터 드라이버의 이름을 검색합니다.
CString GetDriverName() const;
Return Value
CString
시스템 정의 드라이버 이름을 지정하는 형식입니다.
설명
호출 후 이 함수를 호출 DoModal
하거나 GetDefaults
시스템 정의 프린터 디바이스 드라이버의 이름을 검색합니다. 호출CDC::CreateDC
에서 반환된 GetDriverName
개체에 CString
대한 포인터를 값 lpszDriverName
으로 사용합니다.
예시
CPrintDialog::GetDeviceName
에 대한 예를 참조하세요.
CPrintDialog::GetFromPage
인쇄 범위의 시작 페이지를 검색합니다.
int GetFromPage() const;
Return Value
인쇄할 페이지 범위의 시작 페이지 번호입니다.
설명
호출한 후 이 함수를 호출 DoModal
하여 인쇄할 페이지 범위의 시작 페이지 번호를 검색합니다.
예시
CPrintDialog::m_pd
에 대한 예를 참조하세요.
CPrintDialog::GetPortName
현재 선택한 프린터 포트의 이름을 검색합니다.
CString GetPortName() const;
Return Value
현재 선택한 프린터 포트의 이름입니다.
설명
호출 후 이 함수를 호출 DoModal
하거나 GetDefaults
현재 선택한 프린터 포트의 이름을 검색합니다.
예시
CPrintDialog::GetDeviceName에 대한 예제를 참조하세요.
CPrintDialog::GetPrinterDC
프린터 디바이스 컨텍스트에 대한 핸들을 검색합니다.
HDC GetPrinterDC() const;
Return Value
성공하면 프린터 디바이스 컨텍스트에 대한 핸들입니다. 그렇지 않으면 NULL
.
설명
bPrintSetupOnly
생성자의 매개 변수 CPrintDialog
가 FALSE
인쇄 대화 상자가 표시됨 GetPrinterDC
을 나타내는 경우 프린터 디바이스 컨텍스트에 대한 핸들을 반환합니다. 사용이 완료되면 Windows DeleteDC
함수를 호출하여 디바이스 컨텍스트를 삭제해야 합니다.
예시
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
인쇄 범위의 끝 페이지를 검색합니다.
int GetToPage() const;
Return Value
인쇄할 페이지 범위의 끝 페이지 번호입니다.
설명
호출한 후 이 함수를 호출 DoModal
하여 인쇄할 페이지 범위의 끝 페이지 번호를 검색합니다.
예시
CPrintDialog::m_pd
에 대한 예를 참조하세요.
CPrintDialog::m_pd
멤버가 대화 상자 개체의 특성을 저장하는 구조체입니다.
PRINTDLG& m_pd;
설명
개체를 생성한 CPrintDialog
후 멤버 함수를 호출 DoModal
하기 전에 대화 상자의 다양한 측면을 설정하는 데 사용할 m_pd
수 있습니다. 구조에 m_pd
대한 자세한 내용은 Windows SDK를 참조 PRINTDLG
하세요.
데이터 멤버를 m_pd
직접 수정하는 경우 기본 동작을 재정의합니다.
예시
// 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
문서의 모든 페이지를 인쇄할지 여부를 결정합니다.
BOOL PrintAll() const;
Return Value
문서의 모든 페이지를 인쇄할 경우 0이 아닌 경우 그렇지 않으면 0입니다.
설명
호출 후 이 함수를 호출 DoModal
하여 문서의 모든 페이지를 인쇄할지 여부를 결정합니다.
예시
CPrintDialog::m_pd
에 대한 예를 참조하세요.
CPrintDialog::PrintCollate
데이터 정렬된 복사본이 요청되는지 여부를 결정합니다.
BOOL PrintCollate() const;
Return Value
사용자가 대화 상자에서 데이터 정렬 확인란을 선택하는 경우 0이 아닌 경우 그렇지 않으면 0입니다.
설명
호출 후 이 함수를 호출 DoModal
하여 프린터에서 문서의 인쇄된 모든 복사본을 정렬해야 하는지 여부를 확인합니다.
예시
// 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
지정된 페이지 범위만 인쇄할지 여부를 결정합니다.
BOOL PrintRange() const;
Return Value
문서의 페이지 범위만 인쇄할 경우 0이 아닌 경우 그렇지 않으면 0입니다.
설명
호출 후 이 함수를 호출 DoModal
하여 문서의 페이지 범위만 인쇄할지 여부를 결정합니다.
예시
CPrintDialog::m_pd
에 대한 예를 참조하세요.
CPrintDialog::PrintSelection
현재 선택한 항목만 인쇄할지 여부를 결정합니다.
BOOL PrintSelection() const;
Return Value
선택한 항목만 인쇄할 경우 0이 아닌 경우 그렇지 않으면 0입니다.
설명
호출 후 이 함수를 호출 DoModal
하여 현재 선택한 항목만 인쇄할지 여부를 결정합니다.
예시
CPrintDialog::m_pd
에 대한 예를 참조하세요.