先日はありがとうございました。
大量のデータ(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();
}
}
すいません。
}がひとつ多いですね(^^;
印刷を実装する上で一番大切なのはページ分割することです。
次のような手順で考えてはいかがでしょうか?
① 1ページに印刷可能な行数を求める(印刷情報やフォント情報から計算する)
② ①の行数を元に必要なページ数を求める
③ ページ数分 印刷処理を繰り返す(pDC.StartDoc(&ppr) から pDC.EndDoc(&ppr)まで)
その際、印刷しているページに該当するデータだけを描画する
> ③ ページ数分 印刷処理を繰り返す(pDC.StartDoc(&ppr) から pDC.EndDoc(&ppr)まで)
pDC.StartPage(&ppr) から pDC.EndPage(&ppr) の間違いです。
HELPの熟読をされた方が良いような気がします。
この辺の記述は、割と詳しくかかれています。
MSのHELPは確かに所々間違いもあるみたいですが、
基本的にはかなり有益な情報が記述してあります。
よく読んで損をすると言う事は無いですよ。