CDC::StartDoc
新しい印刷ジョブが開始されたこと、および EndDoc の呼び出しが発生するまで EndPage のすべての後続 StartPage と呼び出しが同じジョブの下にスプールされる必要があることをデバイス ドライバーに通知します。
int StartDoc(
LPDOCINFO lpDocInfo
);
int StartDoc(
LPCTSTR lpszDocName
);
パラメーター
lpDocInfo
ドキュメント ファイルの名前と出力ファイルの名前を含む DOCINFO の構造体へのポインター。lpszDocName
ドキュメント ファイルの名前を含む文字列へのポインター。
戻り値
関数が正常に終了した場合、戻り値はゼロより大きい。この値は、ドキュメントの印刷ジョブの識別子です。
関数が失敗した場合、戻り値は以下です。
解説
これはドキュメントが他のジョブにより、1 ページ混在しないようにします。
Windows Version 3.1 以降の場合、この関数は STARTDOC のプリンターのエスケープを置き換えます。この関数を使用して、複数のページを含むドキュメントが他の印刷ジョブが混在していないことを確認します。
StartDoc はメタファイルの中で使用する必要があります。
使用例
このコードは、プリンター、印刷ジョブを取得します。開き、スプールを 1 ページが「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);
}
}
}
}
必要条件
ヘッダー: afxwin.h