Share via


CPageSetupDialog 클래스

인쇄 여백 설정과 수정이 추가로 지원되는 Windows 공용 OLE 페이지 설정 대화 상자에서 제공하는, 서비스를 캡슐화합니다.

구문

class CPageSetupDialog : public CCommonDialog

멤버

공용 생성자

속성 설명
CPageSetupDialog::CPageSetupDialog CPageSetupDialog 개체를 생성합니다.

공용 메서드

이름 설명
CPageSetupDialog::CreatePrinterDC 인쇄할 디바이스 컨텍스트를 만듭니다.
CPageSetupDialog::D oModal 대화 상자를 표시하고 사용자가 선택할 수 있도록 합니다.
CPageSetupDialog::GetDeviceName 프린터의 디바이스 이름을 반환합니다.
CPageSetupDialog::GetDevMode 프린터의 현재 DEVMODE를 반환합니다.
CPageSetupDialog::GetDriverName 프린터에서 사용하는 드라이버를 반환합니다.
CPageSetupDialog::GetMargins 프린터의 현재 여백 설정을 반환합니다.
CPageSetupDialog::GetPaperSize 프린터의 용지 크기를 반환합니다.
CPageSetupDialog::GetPortName 출력 포트 이름을 반환합니다.
CPageSetupDialog::OnDrawPage 인쇄된 페이지의 화면 이미지를 렌더링하기 위해 프레임워크에서 호출됩니다.
CPageSetupDialog::P reDrawPage 인쇄된 페이지의 화면 이미지를 렌더링하기 전에 프레임워크에서 호출됩니다.

공용 데이터 멤버

이름 설명
CPageSetupDialog::m_psd 개체를 사용자 지정하는 데 사용되는 구조체입니다 CPageSetupDialog .

설명

이 클래스는 인쇄 설정 대화 상자를 대신하도록 설계되었습니다.

개체를 CPageSetupDialog 사용하려면 먼저 생성자를 사용하여 개체를 CPageSetupDialog 만듭니다. 대화 상자가 생성되면 데이터 멤버의 값을 m_psd 설정하거나 수정하여 대화 상자 컨트롤의 값을 초기화할 수 있습니다. m_psd 구조체는 PAGESETUPDLG 형식입니다.

대화 상자 컨트롤을 초기화한 후 멤버 함수를 DoModal 호출하여 대화 상자를 표시하고 사용자가 인쇄 옵션을 선택할 수 있도록 합니다. DoModal 는 사용자가 확인(IDOK) 또는 취소(IDCANCEL) 단추를 선택했는지 여부를 반환합니다.

IDOK를 반환하는 경우 DoModal 여러 CPageSetupDialog멤버 함수를 사용하거나 데이터 멤버에 m_psd 액세스하여 사용자가 정보 입력을 검색할 수 있습니다.

참고 항목

일반적인 OLE 페이지 설정 대화 상자가 해제되면 사용자가 변경한 내용은 프레임워크에서 저장되지 않습니다. 이 대화 상자의 모든 값을 애플리케이션의 문서 또는 애플리케이션 클래스의 멤버와 같은 영구 위치에 저장하는 것은 애플리케이션 자체의 달려 있습니다.

상속 계층 구조

CObject

CCmdTarget

CWnd

Cdialog

CCommonDialog

CPageSetupDialog

요구 사항

헤더: afxdlgs.h

CPageSetupDialog::CPageSetupDialog

개체를 생성하려면 이 함수를 호출합니다 CPageSetupDialog .

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

매개 변수

dwFlags
대화 상자의 설정을 사용자 지정하는 데 사용할 수 있는 플래그가 하나 이상 있습니다. 비트 OR 연산자를 사용하여 값을 결합할 수 있습니다. 이러한 값에는 다음과 같은 의미가 있습니다.

  • PSD_DEFAULTMINMARGINS 페이지 여백에 허용되는 최소 너비를 프린터의 최소값과 동일하게 설정합니다. PSD_MARGINS 및 PSD_MINMARGINS 플래그도 지정된 경우 이 플래그는 무시됩니다.

  • PSD_INWININIINTLMEASURE 구현되지 않았습니다.

  • PSD_MINMARGINS 시스템에서 멤버에 rtMinMargin 지정된 값을 왼쪽, 위쪽, 오른쪽 및 아래쪽 여백에 대해 허용되는 최소 너비로 사용하도록 합니다. 시스템에서는 사용자가 지정된 최소값보다 작은 너비를 입력할 수 없습니다. PSD_MINMARGINS 지정하지 않으면 시스템에서 허용되는 최소 너비를 프린터에서 허용하는 너비로 설정합니다.

  • PSD_MARGINS 여백 제어 영역을 활성화합니다.

  • PSD_INTHOUSANDTHSOFINCHES 대화 상자의 단위를 1/1000인치로 측정합니다.

  • PSD_INHUNDREDTHSOFMILLIMETERS 대화 상자의 단위를 1/100 밀리미터 단위로 측정합니다.

  • PSD_DISABLEMARGINS 여백 대화 상자 컨트롤을 사용하지 않도록 설정합니다.

  • PSD_DISABLEPRINTER 프린터 단추를 사용하지 않도록 설정합니다.

  • PSD_NOWARNING 기본 프린터가 없을 때 경고 메시지가 표시되지 않도록 합니다.

  • PSD_DISABLEORIENTATION 페이지 방향 대화 상자 컨트롤을 사용하지 않도록 설정합니다.

  • CPageSetupDialog PSD_RETURNDEFAULT 대화 상자를 표시하지 않고 시스템 기본 프린터에 대해 초기화된 DEVMODEDEVNAMES 구조를 반환합니다. 둘 다 hDevNames NULL인 것으로 가정하고 hDevMode , 그렇지 않으면 함수가 오류를 반환합니다. 이전 프린터 드라이버(Windows 버전 3.0 이전)에서 시스템 기본 프린터를 지원하는 경우 반환 hDevModehDevNames 되며 NULL입니다.

  • PSD_DISABLEPAPER 용지 선택 컨트롤을 사용하지 않도록 설정합니다.

  • PSD_SHOWHELP 대화 상자에 도움말 단추가 표시되도록 합니다. 이 플래그가 hwndOwner 지정된 경우 멤버가 NULL이 아니어야 합니다.

  • PSD_ENABLEPAGESETUPHOOK 에 지정된 후크 함수를 사용하도록 설정합니다 lpfnSetupHook.

  • PSD_ENABLEPAGESETUPTEMPLATE 운영 체제에서 식별 hInstancelpSetupTemplateName대화 상자 템플릿을 사용하여 대화 상자를 만들도록 합니다.

  • PSD_ENABLEPAGESETUPTEMPLATEHANDLE 미리 로드된 대화 상자 템플릿이 포함된 데이터 블록을 식별함을 hInstance 나타냅니다. 이 플래그를 lpSetupTemplateName 지정하면 시스템에서 무시됩니다.

  • PSD_ENABLEPAGEPAINTHOOK 에 지정된 후크 함수를 사용하도록 설정합니다 lpfnPagePaintHook.

  • PSD_DISABLEPAGEPAINTING 대화 상자의 그리기 영역을 사용하지 않도록 설정합니다.

pParentWnd
대화 상자의 부모 또는 소유자에 대한 포인터입니다.

설명

DoModal 함수를 사용하여 대화 상자를 표시합니다.

예시

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

DEVMODE 및 DEVNAMES 구조체에서 프린터 디바이스 컨텍스트를 만듭니다.

HDC CreatePrinterDC();

Return Value

새로 만든 DC(프린터 디바이스 컨텍스트)에 대한 핸들입니다.

CPageSetupDialog::D oModal

이 함수를 호출하여 Windows 일반 OLE 페이지 설정 대화 상자를 표시하고 사용자가 인쇄 여백, 용지 크기 및 방향, 대상 프린터와 같은 다양한 인쇄 설정 옵션을 선택할 수 있도록 합니다.

virtual INT_PTR DoModal();

Return Value

IDOK 또는 IDCANCEL. IDCANCEL이 반환되면 Windows CommDlgExtendedError 함수를 호출하여 오류가 발생했는지 여부를 확인합니다.

IDOK 및 IDCANCEL은 사용자가 확인 또는 취소 단추를 선택했는지 여부를 나타내는 상수입니다.

설명

또한 사용자는 선택한 프린터와 관련된 네트워크 위치 및 속성과 같은 프린터 설정 옵션에 액세스할 수 있습니다.

구조체의 m_psd 멤버를 설정하여 다양한 페이지 설정 대화 상자를 초기화하려면 호출 DoModal하기 전과 대화 상자 개체가 생성된 후에 이 옵션을 초기화해야 합니다. 호출 DoModal한 후 다른 멤버 함수를 호출하여 사용자가 대화 상자에 입력한 설정 또는 정보를 검색합니다.

사용자가 입력한 현재 설정을 전파하려면 CWinApp::SelectPrinter호출합니다. 이 함수는 개체의 CPageSetupDialog 정보를 가져와서 적절한 특성을 가진 새 프린터 DC를 초기화하고 선택합니다.

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

예시

CPageSetupDialog::CPageSetupDialog에 대한 예제를 참조하세요.

CPageSetupDialog::GetDeviceName

현재 선택한 프린터의 이름을 검색하려면 이 DoModal 함수를 호출합니다.

CString GetDeviceName() const;

Return Value

개체에서 사용하는 디바이스 이름입니다 CPageSetupDialog .

CPageSetupDialog::GetDevMode

호출 후 이 함수를 호출 DoModal 하여 개체의 프린터 디바이스 컨텍스트에 대한 정보를 검색합니다 CPageSetupDialog .

LPDEVMODE GetDevMode() const;

Return Value

인쇄 드라이버의 디바이스 초기화 및 환경에 대한 정보를 포함하는 DEVMODE 데이터 구조입니다. Windows SDK에 설명된 Windows GlobalUnlock 함수를 사용하여 이 구조에서 가져온 메모리의 잠금을 해제해야 합니다.

CPageSetupDialog::GetDriverName

DoModal을 호출한 후 이 함수를 호출하여 시스템 정의 프린터 디바이스 드라이버의 이름을 검색합니다.

CString GetDriverName() const;

Return Value

CString 시스템 정의 드라이버 이름을 지정하는 형식입니다.

설명

CDC::CreateDC 호출에서 값 lpszDriverName 으로 반환된 GetDriverName 개체에 대한 포인터 CString사용합니다.

CPageSetupDialog::GetMargins

호출 후 이 함수를 호출하여 DoModal 프린터 디바이스 드라이버의 여백을 검색합니다.

void GetMargins(
    LPRECT lpRectMargins,
    LPRECT lpRectMinMargins) const;

매개 변수

lpRectMargins
현재 선택한 프린터의 인쇄 여백(1/1000인치 또는 1/100mm)을 설명하는 RECT 구조체 또는 CRect 개체에 대한 포인터입니다. 이 사각형에 관심이 없는 경우 이 매개 변수에 대해 NULL을 전달합니다.

lpRectMinMargins
RECT 현재 선택한 프린터의 최소 인쇄 여백(1/1000인치 또는 1/100mm)을 설명하는 구조체 또는 CRect 개체에 대한 포인터입니다. 이 사각형에 관심이 없는 경우 이 매개 변수에 대해 NULL을 전달합니다.

CPageSetupDialog::GetPaperSize

인쇄를 위해 선택한 용지의 크기를 검색하려면 이 함수를 호출합니다.

CSize GetPaperSize() const;

Return Value

인쇄를 위해 선택한 용지 크기(1/1000인치 또는 1/100mm)를 포함하는 CSize 개체입니다.

CPageSetupDialog::GetPortName

호출한 후 이 함수를 호출 DoModal 하여 현재 선택한 프린터 포트의 이름을 검색합니다.

CString GetPortName() const;

Return Value

현재 선택한 프린터 포트의 이름입니다.

CPageSetupDialog::m_psd

멤버가 대화 상자 개체의 특성을 저장하는 PAGESETUPDLG 형식의 구조체입니다.

PAGESETUPDLG m_psd;

설명

개체를 생성한 CPageSetupDialog 후 멤버 함수를 호출 DoModal 하기 전에 대화 상자의 다양한 측면을 설정하는 데 사용할 m_psd 수 있습니다.

데이터 멤버를 m_psd 직접 수정하는 경우 기본 동작을 재정의합니다.

PAGESETUPDLG 구조에 대한 자세한 내용은 Windows SDK를 참조하세요.

CPageSetupDialog::CPageSetupDialog에 대한 예제를 참조하세요.

CPageSetupDialog::OnDrawPage

인쇄된 페이지의 화면 이미지를 그리기 위해 프레임워크에서 호출됩니다.

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

매개 변수

pDC
프린터 디바이스 컨텍스트에 대한 포인터입니다.

nMessage
현재 그려지고 있는 페이지의 영역을 나타내는 메시지를 지정합니다. 다음 중 하나일 수 있습니다.

  • WM_PSD_FULLPAGERECT 전체 페이지 영역입니다.

  • WM_PSD_MINMARGINRECT 현재 최소 여백입니다.

  • WM_PSD_MARGINRECT 현재 여백입니다.

  • 페이지의 내용을 WM_PSD_GREEKTEXTRECT.

  • WM_PSD_ENVSTAMPRECT 우편 번호 표시용으로 예약된 영역입니다.

  • 반환 주소 표현의 WM_PSD_YAFULLPAGERECT 영역입니다. 이 영역은 샘플 페이지 영역의 가장자리까지 확장됩니다.

lpRect
그리기 영역의 좌표를 포함하는 CRect 또는 RECT 개체에 대한 포인터입니다.

Return Value

처리되는 경우 0이 아닌 값입니다. 그렇지 않으면 0입니다.

설명

그런 다음 이 이미지는 일반적인 OLE 페이지 설정 대화 상자의 일부로 표시됩니다. 기본 구현은 텍스트 페이지의 이미지를 그립니다.

이미지의 특정 영역 또는 전체 이미지의 그리기를 사용자 지정하려면 이 함수를 재정의합니다. nMessage 값을 검사 문이 있는 case 문을 사용하여 switch 이 작업을 수행할 수 있습니다. 예를 들어 페이지 이미지의 콘텐츠 렌더링을 사용자 지정하려면 다음 예제 코드를 사용할 수 있습니다.

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

nMessage모든 사례를 처리할 필요는 없습니다. 이미지의 한 구성 요소, 이미지의 여러 구성 요소 또는 전체 영역을 처리하도록 선택할 수 있습니다.

CPageSetupDialog::P reDrawPage

인쇄된 페이지의 화면 이미지를 그리기 전에 프레임워크에서 호출됩니다.

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

매개 변수

wPaper
용지 크기를 나타내는 값을 지정합니다. 이 값은 DEVMODE 구조체 설명나열된 DMPAPER_ 값 중 하나일 수 있습니다.

wFlags
용지 또는 봉투의 방향과 프린터가 도트 매트릭스인지 HPPCL(휴렛 팩커드 프린터 제어 언어) 장치인지 여부를 나타냅니다. 이 매개 변수는 다음 값 중 하나를 가질 수 있습니다.

  • 가로 모드의 0x001 용지(도트 매트릭스)

  • 가로 모드에서 용지 0x003(HPPCL)

  • 세로 모드의 0x005 용지(도트 매트릭스)

  • 세로 모드에서 용지 0x007(HPPCL)

  • 가로 모드에서 봉투 0x00b(HPPCL)

  • 세로 모드에서 봉투 0x00d(점 행렬)

  • 가로 모드에서 봉투 0x019(점 행렬)

  • 세로 모드에서 봉투 0x01f(점 행렬)

pPSD
PAGESETUPDLG 구조체에 관한 포인터입니다. PAGESETUPDLG에 대한 자세한 내용은 Windows SDK를 참조하세요.

Return Value

처리되는 경우 0이 아닌 값입니다. 그렇지 않으면 0입니다.

설명

이미지 그리기를 사용자 지정하려면 이 함수를 재정의합니다. 이 함수를 재정의하고 TRUE를 반환하는 경우 전체 이미지를 그려야 합니다. 이 함수를 재정의하고 FALSE를 반환하면 프레임워크에서 전체 기본 이미지를 그립니다.

참고 항목

MFC 샘플 WORDPAD
CCommonDialog 클래스
계층 구조 차트