Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Печать CScrollView


Автор: Leopard25 11.4.2005, 20:28
Я с печатью никогда неработал....

В MDI приложении сделал несколько видов документа,
добавляю вид от CScrollView в меню пункты
печать и предварительный просмотр есть но они неактивные.
Подскажите пожалуйста как сделать их активными ?
Заранее благодарен.

Автор: Coocky 11.4.2005, 21:15
Цитата
печать и предварительный просмотр есть но они неактивные

Неактивная кнопка означает отсутствие обработчика .Добавь на нее обработчик.Посмотри как это делает визард.Просто вызови метод базового класса СScrollView::OnPrint()-если не ошибаюсь.Еще раз глянь как делает визард.

Автор: Leopard25 11.4.2005, 22:39
обработчик создаётся пустым , а в СScrollView::OnPrint() нужно передать
(CDC* pDC, CPrintInfo* pInfo)....
Смотрел рабочие примеры .... У этих кнопок (печать и предварительный просмотр) в классе СScrollView нет никаких обработчиков, где их искать?

Автор: Coocky 11.4.2005, 22:44
Цитата
в классе СScrollView нет никаких обработчиков, где их искать?

smile Нет обработчика,нет реакции на нажатии кнопки.
Создай простое приложение и зайди в класс View
Добавлено @ 22:45
Цитата
СScrollView::OnPrint()-

Нет,ошибся.Кажется СScrollView::OnFilePrint()
метод базового класса!Он от тебя сокрыт.!

Автор: Leopard25 11.4.2005, 23:48
просто вызвать OnFilePrintPreview(); из моего обработчика неполучается
при выполнении пишет :

First-chance exception at 0x004e4879 in Nat_1.exe: 0xC00000FD: Stack overflow.
Unhandled exception at 0x004e4879 in Nat_1.exe: 0xC00000FD: Stack overflow.

Автор: Coocky 12.4.2005, 21:18
Хм....
Хорошо.Давай сделаем по другому.Печать эта таже графика,только в контексте принтера.Вернись снова к приложению SDI,созданую с опциями печати,нажми на функцию F12,которая вызывается в обработчике,при печати.Посмотри,что она вызывает в свою очередь.
Тяжело без компа из клуба...

Автор: Leopard25 12.4.2005, 22:00
С этим разобрался....
заменил в OnPreparePrinting :

return CScrollView::OnPreparePrinting(pInfo);

на:
return DoPreparePrinting(pInfo);

предпросмотр появляется , но немогу распечатать все страницы документа (печатается только первая)

как переключать печать страниц ? (как установить с какого места печатать?)

после того как определяю какая страница должна печататься (через pInfo->m_nCurPage)

Автор: Coocky 14.4.2005, 22:19
Leopard25
Без проблем.Завтра дам код и обьясню на пальцах

Автор: Leopard25 15.4.2005, 15:18
А в пред просмотре есть кнопка Print.... ,но при нажатии на неё ничего непроисходит... Почему ?

Автор: Coocky 15.4.2005, 22:22


Leopard25
ну подожди до завтра.Я вернусь с Академии и примерчик захвачу.Ок?

Автор: Leopard25 19.4.2005, 23:52
а примерчик мона ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)