求助关于RichEdit的打印和打印预览功能

thinkingsheep 2005-12-01 01:10:43
有一个基于对话框的RichEdit,我现在想加两个按钮,一个是对RichEdit内容的打印预览,一个是对RichEdit内容的打印,我对打印这块不是很熟,请问有什么好的类或者示例代码么?谢谢!
...全文
256 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuliangpei 2005-12-01
  • 打赏
  • 举报
回复
m_nScreenResolution通常的情况下是96
yuliangpei 2005-12-01
  • 打赏
  • 举报
回复
m_nScreenResolution是当前屏幕的每英寸像数点数。
这是函数头部分
void PrintRichEdit(CRichEditCtrl *pRichEdit, CDC *dc, CRect rect)
其CRichEditCtrl *pRichEdit就是你的RichEdit控件,dc就是你打印机的dc,rect是你要打印RichEdit的矩形大小。
直接用,传进相应的参数就可以了。
thinkingsheep 2005-12-01
  • 打赏
  • 举报
回复
请问m_nScreenResolution是什么值?还有这个函数怎么用阿?谢谢!
yuliangpei 2005-12-01
  • 打赏
  • 举报
回复
上面是打印的代码
yuliangpei 2005-12-01
  • 打赏
  • 举报
回复
void PrintRichEdit(CRichEditCtrl *pRichEdit, CDC *dc, CRect rect)
{
FORMATRANGE fr;
int nLast = 0;
RECT richPage;

UINT nCurPrinterResX = dc->GetDeviceCaps(LOGPIXELSX);
float fPrnScrRatio = static_cast<float>(nCurPrinterResX * 1.0 / m_nScreenResolution);

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));
long lWidth = dc->GetDeviceCaps(PHYSICALWIDTH);
long lpixel = dc->GetDeviceCaps(LOGPIXELSX);
lpixel = dc->GetDeviceCaps(LOGPIXELSY);

fr.hdc = dc->m_hDC;
fr.hdcTarget = dc->m_hDC;
fr.rc = richPage;
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);
}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧