Freigeben über


CDC::StartDoc

Informiert den Gerätetreiber, dass ein neuer Druckauftrag beginnen soll und dass alle folgenden StartPage und EndPage Aufrufe unter demselben Auftrag gespoolt werden sollen, bis ein Aufruf EndDoc auftritt.

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

Parameter

  • lpDocInfo
    zeigt auf eine DOCINFO-Struktur, die den Namen der Dokumentdatei und den Namen der Ausgabedatei enthält.

  • lpszDocName
    Zeiger auf eine Zeichenfolge, die den Namen der Dokumentdatei enthält.

Rückgabewert

Wenn die Funktion folgt, ist der Rückgabewert größer als. Dieser Wert ist der Druckauftragsbezeichner für das Dokument.

Wenn die Funktion fehlschlägt, ist der Rückgabewert kleiner oder gleich Null.

Hinweise

Dadurch wird sichergestellt, dass Dokumente länger als eine Seite nicht mit anderen Aufträgen gemischt werden.

Für Windows-Versionen 3,1 und höher, ersetzt diese Funktion das STARTDOC Druckerescape. Mit dieser Funktion wird sichergestellt, dass die Dokumente, die mehr als eine Seite enthalten, nicht mit anderen Druckaufträgen gemischt werden.

StartDoc sollte nicht innerhalb der Metadateien verwendet werden.

Beispiel

Dieses Codefragment ruft den Standarddrucker ab, öffnet einen Druckauftrag spoolt und eine Seite mit "Hello, World!" dafür. Da der Text, der von diesen Code festzulegen, nicht auf die logischen Einheiten des Druckers skaliert wird, kann der Ausgabetext in solchen Kleinbuchstaben, dass das Ergebnis nicht lesbar ist. CDC, das Funktionen, z SetMapMode, SetViewportOrg und SetWindowExt skaliert, kann verwendet werden, um die Skalierung zu beheben.

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

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CDC-Klasse

Hierarchiediagramm

CDC::Escape

CDC::EndDoc

CDC::AbortDoc