Когда я печатаю CDC для элемента управления отчетами, который я создал, он кажется крошечным (размером менее 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 все. –
Использование большего шрифта на самом деле не подходит для рисования большего размера. Правильный способ - установить правильный режим отображения и видовое окно для вашего DC. Взгляните на функции CDC :: SetMapMode() и :: SetWindowExtEx(). –