若要檢視英文版的文章,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

CDC::StartDoc

 

告知裝置驅動程式新列印工作開始,而且應該多工緩衝處理所有後續 StartPageEndPage 呼叫相同工作之下,直到 EndDoc 呼叫時發生。


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

lpDocInfo

包含文件的名稱和輸出檔的名稱 DOCINFO 結構的點。

lpszDocName

out 包含檔案名稱的字串。

如果函式成功,則傳回值大於零。這個值是文件的列印工作識別項。

如果函式失敗,則傳回值小於或等於零。

這可確保資料超過一頁的長度不會穿插在其他工作。

在 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

顯示: