请教 RichEdit5.0 打印问题 表格变大,急急急!
各位高手好,我碰到一个紧急的问题,在VC中使用RichEdit5.0,本身显示的时候是在一个View里面动态创建RichEdit控件,原来打印的时候都是通过TextOut实现打印,升级到5.0之后GetCharPos出现问题,只能打印一半内容,现在改为DrawText,但是在打印表格的时候就不行了,现在打印表格我用了FormatRange,但是发现表格被放大了,我不知道表格怎么会变大的,附上代码,请各位指教,很急,急,急。
void CReport::PrintRichEdit(CRptRichEdit *pRichEdit, CDC *dc, CRect rect)
{
FORMATRANGE fr;
int nLast = 0;
//RECT richPage;
CRect richPage(0, 0, 1000, 1000);
CRect rPage(700,3200,800,4500);
UINT nCurPrinterResX = dc->GetDeviceCaps(LOGPIXELSX);
float fPrnScrRatio = static_cast <float>(nCurPrinterResX * 1.0 / 96);
long lLineWidth = ::MulDiv(rect.Width()*fPrnScrRatio, 1440, dc->GetDeviceCaps(LOGPIXELSX));
/* richPage.left = ::MulDiv(rect.left*fPrnScrRatio, 1440, dc->GetDeviceCaps(LOGPIXELSX));
richPage.top = ::MulDiv(rect.top*fPrnScrRatio , 1440, dc->GetDeviceCaps(LOGPIXELSY));
richPage.right = ::MulDiv(rect.right*fPrnScrRatio, 1440, dc->GetDeviceCaps(LOGPIXELSX));
richPage.bottom= ::MulDiv(rect.bottom*fPrnScrRatio, 1440, dc->GetDeviceCaps(LOGPIXELSY));
*/
//richPage=rect;
long lWidth = dc->GetDeviceCaps(PHYSICALWIDTH);
long lpixel = dc->GetDeviceCaps(LOGPIXELSX);
lpixel = dc->GetDeviceCaps(LOGPIXELSY);
PARAFORMAT2 pf;
pf.cbSize = sizeof(PARAFORMAT2);
pf.dwMask = PFM_OFFSET;
//pf.wNumbering = PFN_BULLET; //注意PFM_NUMBERING
pf.dxOffset = 2;
VERIFY(pRichEdit->SetParaFormat(pf));
SetModifiedFlag(false);
fr.hdc = dc->m_hDC;
fr.hdcTarget = dc->m_hDC;
fr.rc = rPage;
fr.rcPage = richPage;
fr.chrg.cpMin = nLast;
fr.chrg.cpMax = -1;
//dc->SaveDC();
pRichEdit->SetTargetDevice(*dc, lLineWidth);
nLast = pRichEdit->FormatRange(&fr, TRUE);
fr.chrg.cpMax = nLast;
pRichEdit->DisplayBand(&richPage);
pRichEdit->FormatRange(NULL, FALSE);
dc->RestoreDC(-1);
}