CDC::StartDoc
通知设备驱动程序新的打印作业开始,后面的 StartPage 和 EndPage 调用应后台打印在同一工作下,直到 EndDoc 调用发生。
int StartDoc(
LPDOCINFO lpDocInfo
);
int StartDoc(
LPCTSTR lpszDocName
);
参数
lpDocInfo
指向 DOCINFO 包含文件的名称和输出文件的名称结构。lpszDocName
对包含文件名称的字符串的指针。
返回值
如果函数成功,则返回值大于零。此值是文档的打印作业标识符。
如果函数失败,则返回值小于或等于零。
备注
长期文档比的这将确保一页不会交错与其他工作。
对于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