CDC::StartDoc
새 인쇄 작업을 시작 하 고 장치 드라이버를 알립니다 고 이후의 모든 StartPage 및 EndPage 호출 될 때까지 같은 작업에서 스풀 합니다는 EndDoc 호출이 발생 합니다.
int StartDoc(
LPDOCINFO lpDocInfo
);
int StartDoc(
LPCTSTR lpszDocName
);
매개 변수
lpDocInfo
가리키는 있는 DOCINFO 문서 파일 이름과 출력 파일 이름을 포함 하는 구조입니다.lpszDocName
문서 파일의 이름을 포함 하는 문자열에 대 한 포인터입니다.
반환 값
함수가 성공 하면 반환 값이 0 보다 큽니다. 이 값은 문서의 인쇄 작업 식별자입니다.
함수가 실패 하면 반환 값이 0 보다 작거나입니다.
설명
이 문서 한 페이지 보다 더 다른 작업과 섞여 수 있는지 확인 합니다.
Windows 3.1 및 이후 버전에서이 함수를 대체는 STARTDOC 프린터 이스케이프 합니다. 이 함수를 사용 하 여 둘 이상의 페이지를 포함 하는 문서에 다른 인쇄 작업을 삽입 되는 보장 합니다.
StartDoc내부 메타 파일을 사용 해야 합니다.
예제
이 코드 조각, 인쇄 작업을 열리고 "Hello, World!"를 한 페이지에 스풀링하고 기본 프린터를 가져옵니다. 텍스트에서이 코드를 인쇄 하는 프린터 논리 단위 배율이 조정 되지 않습니다 때문에 출력 텍스트 결과 읽을 수 없습니다 이러한 작은 문자를 수 있습니다. 같은 기능을 확장 하는 CDC SetMapMode, SetViewportOrg, 및 SetWindowExt의 크기를 수정 하려면 사용할 수 있습니다.
void CDCView::DoStartDoc()
{
// get the default printer
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
// is a default printer set up?
HDC hdcPrinter = dlg.GetPrinterDC();
if (hdcPrinter == NULL)
{
MessageBox(_T("Buy a printer!"));
}
else
{
// create a CDC and attach it to the default printer
CDC dcPrinter;
dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");
// if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
MessageBox(_T("Printer wouldn't initalize"));
}
else
{
// start a page
if (dcPrinter.StartPage() < 0)
{
MessageBox(_T("Could not start page"));
dcPrinter.AbortDoc();
}
else
{
// actually do some printing
CGdiObject* pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);
dcPrinter.TextOut(50, 50, _T("Hello World!"), 12);
dcPrinter.EndPage();
dcPrinter.EndDoc();
dcPrinter.SelectObject(pOldFont);
}
}
}
}
요구 사항
헤더: afxwin.h