CDC::StartDoc
告知裝置驅動程式新列印工作開始,而且應該多工緩衝處理所有後續 StartPage 和 EndPage 呼叫相同工作之下,直到 EndDoc 呼叫時發生。
int StartDoc(
LPDOCINFO lpDocInfo
);
int StartDoc(
LPCTSTR lpszDocName
);
參數
lpDocInfo
包含文件的名稱和輸出檔的名稱 DOCINFO 結構的點。lpszDocName
out 包含檔案名稱的字串。
傳回值
如果函式成功,則傳回值大於零。 這個值是文件的列印工作識別項。
如果函式失敗,則傳回值小於或等於零。
備註
這可確保資料超過一頁的長度不會穿插在其他工作。
在 Windows 3.1 (含) 以後版本,這個函式會取代 STARTDOC 印表機逸出。 使用這個函式可確保包含多個頁面的文件不含穿插在其他列印工作。
不應該使用StartDoc 於中繼資料內。
範例
這個程式碼片段中取得預設的印表機,開啟,然後列印工作正在多工緩衝處理網頁具有「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