프린트 다이얼로그를 안 띄우고 인쇄하기
페이지 정보
본문
프린트 다이얼로그를 안 띄우고 기본 프린터로 인쇄하고 싶습니다. 방법을 알려주세요.
기본적으로 인쇄는 인쇄 다이얼로그를 띄우는 절차를 필요로 합니다. MFC의 인쇄 다이얼로그 클래스는 CPrintDialog인데 이 클래스를 생성할 때 인자를 잘 주면 다이얼로그가 뜨지 않고 기본 프린터에 대한 정보만 얻어오게 됩니다. 다음 코드는 인쇄 다이얼로그를 띄우지 않고 프린터에 출력하는 예제입니다.
// CPrintDialog를 이용해 프린터의 디폴트 설정을 읽어온다.
CPrintDialog dlg(TRUE, PD_RETURNDEFAULT);
// DoModal을 실행하면 원래는 다이얼로그가 떠야되지만 인자로 PD_RETURNDEFAULT를
// 주었기 때문에 정보만 얻어오고 바로 리턴한다.
dlg.DoModal();
// 종이를 가로 방향으로 찍고 싶다든지 여러 매를 찍고 싶다면 아래의 코드를 수정하여
// 사용한다. DEVMODE 구조체를 공부해보기 바란다. 다음 예는 가로 방향으로 설정하는 예이다.
DEVMODE *pDevMode = (DEVMODE *)::GlobalLock(dlg.m_pd.hDevMode);
if (pDevMode)
{
// 프린터의 인쇄 방향 설정을 변경한다.
pDevMode->dmOrientation = DMORIENT_LANDSCAPE;
// 3매를 찍도록 한다.
pDevMode->dmCopies = 3;
::GlobalUnlock(dlg.m_pd.hDevMode);
}
CDC dc;
// 프린터 설정을 dc 변수에 반영한다.
if (dc.Attach(dlg.CreatePrinterDC()))
{
DOCINFO di;
// 새로 생성되는 프린트 잡의 이름을 준다.
memset(&di, 0x00, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "InstPhoto Output";
// 프린트 잡을 하나 연다.
dc.StartDoc(&di);
dc.StartPage();
// dc에 원하는 출력을 수행한다.
....
// 출력이 종료되었으면 마무리 작업을 한다.
dc.EndPage();
dc.EndDoc();
dc.DeleteDC();
}
기본적으로 인쇄는 인쇄 다이얼로그를 띄우는 절차를 필요로 합니다. MFC의 인쇄 다이얼로그 클래스는 CPrintDialog인데 이 클래스를 생성할 때 인자를 잘 주면 다이얼로그가 뜨지 않고 기본 프린터에 대한 정보만 얻어오게 됩니다. 다음 코드는 인쇄 다이얼로그를 띄우지 않고 프린터에 출력하는 예제입니다.
// CPrintDialog를 이용해 프린터의 디폴트 설정을 읽어온다.
CPrintDialog dlg(TRUE, PD_RETURNDEFAULT);
// DoModal을 실행하면 원래는 다이얼로그가 떠야되지만 인자로 PD_RETURNDEFAULT를
// 주었기 때문에 정보만 얻어오고 바로 리턴한다.
dlg.DoModal();
// 종이를 가로 방향으로 찍고 싶다든지 여러 매를 찍고 싶다면 아래의 코드를 수정하여
// 사용한다. DEVMODE 구조체를 공부해보기 바란다. 다음 예는 가로 방향으로 설정하는 예이다.
DEVMODE *pDevMode = (DEVMODE *)::GlobalLock(dlg.m_pd.hDevMode);
if (pDevMode)
{
// 프린터의 인쇄 방향 설정을 변경한다.
pDevMode->dmOrientation = DMORIENT_LANDSCAPE;
// 3매를 찍도록 한다.
pDevMode->dmCopies = 3;
::GlobalUnlock(dlg.m_pd.hDevMode);
}
CDC dc;
// 프린터 설정을 dc 변수에 반영한다.
if (dc.Attach(dlg.CreatePrinterDC()))
{
DOCINFO di;
// 새로 생성되는 프린트 잡의 이름을 준다.
memset(&di, 0x00, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "InstPhoto Output";
// 프린트 잡을 하나 연다.
dc.StartDoc(&di);
dc.StartPage();
// dc에 원하는 출력을 수행한다.
....
// 출력이 종료되었으면 마무리 작업을 한다.
dc.EndPage();
dc.EndDoc();
dc.DeleteDC();
}
댓글목록
등록된 댓글이 없습니다.