У меня есть простая задача, где мне нужно распечатать содержимое CRichEditView. Нет необходимости масштабирования, нет диапазона печати, просто печатайте содержимое. Проще говоря, я попытался добавить это к карте сообщений:
ON_COMMAND(ID_FILE_PRINT, &CRichEditView::OnFilePrint)
И реализовать виртуальную функцию:
BOOL CMyRichView::OnPreparePrinting(CPrintInfo* pInfo)
{
return DoPreparePrinting(pInfo);
}
Но когда она печаталась (это то, что на самом деле должно было быть напечатано ):
BOOL CMyRichView::OnPreparePrinting(CPrintInfo* pInfo)
{
return DoPreparePrinting(pInfo);
}
Я получил только половину 'r' при возврате "eturn DoPreparePrinting (pInfo);". Так что, похоже, это связано с полями или с чем-то, что CRichEditView
не справляется сам?
Что мне не хватает?
TIA !!
РЕДАКТИРОВАТЬ :
Я пытался изменить его на
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);
}