大量のデータの印刷

[戻る]
べるすたしお [E-Mail] 2002/02/13(水) 17:17:23
先日はありがとうございました。
大量のデータ(double)を読み込んで、これを処理し、結果をプリントアウトするプログラム
を作っているのですが、今度は印刷でつまずいてしまいました(汗
印刷するデータは倍精度実数型で、データを一列に出力しています。
1ページ目は出力されるのですが、2ページ目以降が出力されません。
VC++6.0 MFCのダイアログベースでやっています。
よろしくお願い致します。
一応コードを下にのせておきます。

CDC pDC;
CPrintDialog dlg(FALSE);
if(dlg.DoModal() == IDOK) {
  HDC hd = dlg.GetPrinterDC();
  pDC.Attach(hd);

  DOCINFO ppr;
  ppr.cbSize = sizeof(DOCINFO);
  ppr.lpszDocName = NULL;
  ppr.lpszOutput = NULL;
  pDC.StartDoc(&ppr);
  pDC.StartPage();

  TEXTMETRIC tm;
  pDC.GetTextMetrics(&tm);
  hpr = tm.tmHeight+tm.tmExternalLeading;

  // 処理開始
     :
  // 処理終了

  pDC.EndPage();
  pDC.EndDoc();
  }
}

べるすたしお [E-Mail] 2002/02/13(水) 17:18:44
すいません。
}がひとつ多いですね(^^;

sara 2002/02/13(水) 18:20:49
印刷を実装する上で一番大切なのはページ分割することです。

次のような手順で考えてはいかがでしょうか?
@ 1ページに印刷可能な行数を求める(印刷情報やフォント情報から計算する)
A @の行数を元に必要なページ数を求める
B ページ数分 印刷処理を繰り返す(pDC.StartDoc(&ppr) から pDC.EndDoc(&ppr)まで)
  その際、印刷しているページに該当するデータだけを描画する

sara 2002/02/13(水) 18:29:06
> B ページ数分 印刷処理を繰り返す(pDC.StartDoc(&ppr) から pDC.EndDoc(&ppr)まで)
 pDC.StartPage(&ppr) から pDC.EndPage(&ppr) の間違いです。

PATIO 2002/02/21(木) 10:42:07
HELPの熟読をされた方が良いような気がします。
この辺の記述は、割と詳しくかかれています。
MSのHELPは確かに所々間違いもあるみたいですが、
基本的にはかなり有益な情報が記述してあります。
よく読んで損をすると言う事は無いですよ。

古いスレッドには追加発言できません。