CDC::StartDoc

通知设备驱动程序新的打印作业开始,后面的 StartPageEndPage 调用应后台打印在同一工作下,直到 EndDoc 调用发生。

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

参数

  • lpDocInfo
    指向 DOCINFO 包含文件的名称和输出文件的名称结构。

  • lpszDocName
    对包含文件名称的字符串的指针。

返回值

如果函数成功,则返回值大于零。此值是文档的打印作业标识符。

如果函数失败,则返回值小于或等于零。

备注

长期文档比的这将确保一页不会交错与其他工作。

对于Windows 3.1版和更高版本,此功能替换 STARTDOC 打印机转义。使用文档包含的此功能可确保在多个页不相交与其他打印作业。

不应使用StartDoc 在元文件中。

示例

此代码片段获取默认打印机,打开打印作业,并后台打印一页与“hello,world!”此。由于此代码将输出的文本不缩放至打印机的逻辑单位,输出文本能在这样的拉丁文小写字母该结果是不可读的。CDC缩放函数,例如 SetMapModeSetViewportOrg,并且,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