Condividi tramite


CDC::StartDoc

Notifica al driver di dispositivo che un nuovo processo di stampa è iniziale e che tutti gli StartPage e chiamate successive EndPage devono essere aggiunti nello stesso processo finché una chiamata EndDoc non si verifichi.

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

Parametri

  • lpDocInfo
    Punta a una struttura DOCINFO contenente il nome del file di documento e il nome del file di output.

  • lpszDocName
    Puntatore a una stringa contenente il nome del file di documento.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è maggiore di zero. Questo valore è l'identificatore del processo di stampa del documento.

Se la funzione ha esito negativo, il valore restituito è minore o uguale a zero.

Note

Questo assicura che i documenti più tempo di una pagina non sono inframmezzati con altri processi.

Per le versioni di Windows 3,1 e versioni successive, questa funzione sostituisce la fuga della stampante STARTDOC. Utilizzando questa funzione garantisce che i documenti che contengono più pagine non sono inframmezzati con altri processi.

StartDoc non deve essere utilizzato in un metafile.

Esempio

Nel frammento di codice ottiene la stampante predefinita, apre un processo di stampa e le bobine una pagina con "hello, world!" su. Poiché il testo visualizzato dal codice non viene ridimensionato alle unità logiche della stampante, il testo di output può essere in tali lettere minuscole che il risultato è illeggibile. Il CDC che ridimensiona le funzioni, come SetMapMode, SetViewportOrge SetWindowExt, può essere utilizzato per correggere la scala.

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);
        }
      }
   }
}

Requisiti

Header: afxwin.h

Vedere anche

Riferimenti

Classe CDC

Grafico delle gerarchie

CDC::Escape

CDC::EndDoc

CDC::AbortDoc