Поделиться через


CDC::StartDoc

Сообщает, что драйвер устройства запускается новое задание печати и все последующие StartPage и вызовы EndPage должны быть намотаны под одним заданием, пока вызов EndDoc не произойдет.

int StartDoc(
   LPDOCINFO lpDocInfo 
);
int StartDoc(
   LPCTSTR lpszDocName 
);

Параметры

  • lpDocInfo
    Указатель на структуру DOCINFO, содержащая имя файла документа и имя выходного файла.

  • lpszDocName
    Указатель на строку, содержащую имя файла документа.

Возвращаемое значение

Если функция завершается успешно, то возвращаемое значение больше нуля.Это значение представляет идентификатор задания печати документа.

Если функция завершается неудачей, то возвращаемое значение меньше или равно нулю.

Заметки

Это гарантирует, что документы больше времени, чем одной страницы не будут interspersed с другими заданиями.

В версии 3.1 и более поздних версий Windows, эта функция заменяет избежать принтера STARTDOC.С помощью этой функции гарантирует, что документы, содержащие более одной страницы interspersed с другими заданиями печати.

StartDoc не должно использоваться внутри метафайлов.

Пример

Этот фрагмент кода возвращает используемый по умолчанию принтер, открывается задание печати и spool одна страница "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);
        }
      }
   }
}

Требования

Header: afxwin.h

См. также

Ссылки

Класс CDC

Диаграмма иерархии

CDC::Escape

CDC::EndDoc

CDC::AbortDoc