私が作成したレポートコントロールのCDCを印刷すると、紙の上に1平方インチ未満の小さいものが表示されます。ページ全体を占有するようにレポートを印刷するにはどうすればよいですか? つまり、レポート全体を1つの印刷ページに表示するにはどうすればよいですか。印刷されたCDCが紙の上に小さい
CPrintDialog printDialog(FALSE); printDialog.DoModal();
CDC dcPrint;
if(dcPrint.Attach(printDialog.GetPrinterDC()))
{
int iHorzRes = dcPrint.GetDeviceCaps(HORZRES);
int iVertRes = dcPrint.GetDeviceCaps(VERTRES);
int iHorzResCDC = m_CDC.GetDeviceCaps(HORZRES);
int iVertResCDC = m_CDC.GetDeviceCaps(VERTRES);
dcPrint.m_bPrinting = TRUE;
dcPrint.BitBlt(0,0, iHorzRes, iVertRes, &m_CDC, iHorzResCDC, iVertResCDC, SRCCOPY);
CFont* pOldFont = dcPrint.SelectObject(&m_HeaderFont);
dcPrint.TextOut(0,0,"HelloWorld") ;
dcPrint.SelectObject(pOldFont);
CPrintInfo printInfo;
printInfo.m_rectDraw.SetRect(0,0, iHorzRes, iVertRes);
dcPrint.StartDoc("Report Print");
dcPrint.StartPage();
if(dcPrint.EndPage())
dcPrint.EndDoc();
else
dcPrint.AbortDoc();
}
dcPrint.DeleteDC();
m_CDCは、私は、画面上のレポート全体をバッファリングして表示するために使用するメモリDCです。
この作品は、私は小さな外観の理由は、プリントDCは、画面のDCよりも多くのピクセルがあることを考え出した。このため、フォントサイズはすべて印刷時に小さく表示されます。そこで私は、印刷DCを渡す新しいフォントサイズを使用して印刷するための描画ロジックを書きました。このようにして、ページ全体がほぼ完成しました。 thanx all。 –
大きなフォントを使用することは、実際にはより大きなフォントを描く正しい方法ではありません。適切な方法は、あなたのDCのために正しいマッピングモードとビューポートを設定することです。 CDC :: SetMapMode()と:: SetWindowExtEx()関数を見てください。 –