printing - MFC:如何打印 CRichEditView 的内容?
问题描述
我有一个简单的任务,我需要打印 CRichEditView 的内容。无需缩放,无需打印范围,只需打印内容。为简单起见,我尝试将其添加到消息映射中:
ON_COMMAND(ID_FILE_PRINT, &CRichEditView::OnFilePrint)
并实现虚函数:
BOOL CMyRichView::OnPreparePrinting(CPrintInfo* pInfo)
{
return DoPreparePrinting(pInfo);
}
但是当它打印时(这实际上是要打印的):
BOOL CMyRichView::OnPreparePrinting(CPrintInfo* pInfo)
{
return DoPreparePrinting(pInfo);
}
在返回“eturn DoPreparePrinting(pInfo);”时我只得到了一半的“r”。所以它似乎必须与边距或CRichEditView
不处理自身的东西有关?
我错过了什么?
蒂亚!!
编辑:
我尝试将其更改为
BOOL CMyRichView::OnPreparePrinting(CPrintInfo* pInfo)
{
// note a MM_TWIPS is 1/1440 of an inch.
// create 1/2" margin which most printers support
CSize sizepaper = GetPaperSize();
CRect rectmargins(720, 720, sizepaper.cx - 720, sizepaper.cy - 720);
// Need to set the margins when printing from CRichEditView
SetMargins(rectmargins);
// per SetMargins API reference, call wrapchanged
if (m_nWordWrap==WrapToTargetDevice) {
WrapChanged();
}
return DoPreparePrinting(pInfo);
}
但现在它只是吐出大量的空白纸。OnPrint(CDC* pDC, CPrintInfo* pInfo)
在调用基类之前,我还在虚函数中进行了尝试。结果相同,因此删除OnPrint()
(不使用它)。
编辑:
所以我从GetPaperSize()
文档中获取了上面的示例。但这是错误的。它使用这个(文档SetPaperSize()
使用)工作。
BOOL CMyRichView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// note a MM_TWIPS is 1/1440 of an inch.
// Need to set the margins when printing from CRichEditView
SetMargins(CRect(720, 720, 720, 720));
// per SetMargins API reference, call wrapchanged
if (m_nWordWrap==WrapToTargetDevice) {
WrapChanged();
}
return __super::OnPrint(pDC, pInfo);
}
解决方案
答案是:
ON_COMMAND(ID_FILE_PRINT, &CRichEditView::OnFilePrint)
BOOL CMyRichView::OnPreparePrinting(CPrintInfo* pInfo)
{
return DoPreparePrinting(pInfo);
}
BOOL CMyRichView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// note a MM_TWIPS is 1/1440 of an inch.
// Need to set the margins when printing from CRichEditView
SetMargins(CRect(720, 720, 720, 720));
// per SetMargins API reference, call wrapchanged
if (m_nWordWrap==WrapToTargetDevice) {
WrapChanged();
}
return __super::OnPrint(pDC, pInfo);
}
推荐阅读
- c++ - 如何区分构造函数
- sql - 如果任何列为空,则返回一个空字符串
- python - 当我将 python3.7 降级到 python3.6 时,查找“virtualenvwrapper.hook_loader”的模块规范时出错
- ios - 由于分发预配问题,Xamarin.forms iOS 安装失败
- angular - Angular9:project ng new -> Disk 0(C:) 达到 100%
- c - 如何使不完整的数组/结构初始化成为错误或警告?
- php - NEXMO:通过 nexmo 向 facebook 发送消息时出现内容类型错误
- laravel - 为什么我在 Laravel 5.5 上的更新图像不起作用?
- javascript - 验证唯一电子邮件 ID(无重复值)
- arrays - 在Swift中合并值数组的最有效方法是什么