次の方法で共有


CDC::StartDoc

更新 : 2007 年 11 月

デバイス ドライバに新しい印刷ジョブが開始されることを通知します。さらに、引き続いて発生するすべての StartPage 呼び出しと EndPage 呼び出しが、EndDoc 呼び出しが生じるまで同じジョブの下にスプールすることを通知します。

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

パラメータ

  • lpDocInfo
    ドキュメント ファイル名と出力ファイル名を持つ DOCINFO 構造体。

  • lpszDocName
    ドキュメント ファイルの名前を含む文字列へのポインタ。

戻り値

正常終了した場合は、0 より大きい値を返します。この値はドキュメントの印刷ジョブ識別子です。

失敗した場合は、0 以下の値を返します。

解説

これは、ドキュメントが複数ページにわたるときにほかのジョブに混在しないようにするためです。

Windows Version 3.1 以降では、STARTDOC プリンタ エスケープはこの関数に置き換えられます。この関数を使うと、複数ページ ドキュメントのページがほかの印刷ジョブに混在しないようになります。

StartDoc は、メタファイル内部で使うことはできません。

使用例

通常使うプリンタを取得し、印刷ジョブを開き、"Hello, World!" という内容の 1 ページをスプールするコードは、次のとおりです。このコードで印刷されるテキストは、プリンタの論理単位にはスケーリングされていないため、出力テキストは、結果が読めないほど小さな文字になる場合もあります。SetMapModeSetViewportOrgSetWindowExt などの CDC スケーリング関数を使うと、スケーリングを修復できます。

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

参照

参照

CDC クラス

階層図

CDC::Escape

CDC::EndDoc

CDC::AbortDoc

その他の技術情報

CDC のメンバ